Use the Bookmarks Bar as the base folder.

Use the bookmarks bar as the base folder for adding bookmarks.

Change-Id: I7f3dfaf0784529ff03b6153937a43eaf7c5ac044
diff --git a/src/com/android/browser/AddBookmarkPage.java b/src/com/android/browser/AddBookmarkPage.java
index 2a252a7..77f8ea8 100644
--- a/src/com/android/browser/AddBookmarkPage.java
+++ b/src/com/android/browser/AddBookmarkPage.java
@@ -16,6 +16,8 @@
 
 package com.android.browser;
 
+import com.android.browser.provider.BrowserProvider2;
+
 import android.app.Activity;
 import android.app.LoaderManager;
 import android.content.ContentResolver;
@@ -24,6 +26,7 @@
 import android.content.CursorLoader;
 import android.content.Intent;
 import android.content.Loader;
+import android.content.SharedPreferences;
 import android.content.res.Resources;
 import android.database.Cursor;
 import android.graphics.Bitmap;
@@ -32,7 +35,9 @@
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
+import android.preference.PreferenceManager;
 import android.provider.BrowserContract;
+import android.text.TextUtils;
 import android.view.KeyEvent;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -208,7 +213,7 @@
                         BrowserContract.Bookmarks.TITLE);
                 int parentIndex = cursor.getColumnIndexOrThrow(
                         BrowserContract.Bookmarks.PARENT);
-                while (parent != 0) {
+                while (parent != BrowserProvider2.FIXED_ID_BOOKMARKS_BAR) {
                     // First, find the folder corresponding to the current
                     // folder
                     if (!cursor.moveToFirst()) {
@@ -306,7 +311,10 @@
             url = mOriginalUrl = mMap.getString("url");
             mTouchIconUrl = mMap.getString("touch_icon_url");
             mThumbnail = (Bitmap) mMap.getParcelable("thumbnail");
-            mCurrentFolder = mMap.getLong(BrowserContract.Bookmarks.PARENT);
+            mCurrentFolder = mMap.getLong(BrowserContract.Bookmarks.PARENT, -1);
+        }
+        if (mCurrentFolder == -1) {
+            mCurrentFolder = getBookmarksBarId(this);
         }
 
         mTitle = (EditText) findViewById(R.id.title);
@@ -342,7 +350,7 @@
         list.setAdapter(mAdapter);
         list.setOnItemClickListener(this);
         LoaderManager manager = getLoaderManager();
-        if (mCurrentFolder != 0) {
+        if (mCurrentFolder != BrowserProvider2.FIXED_ID_BOOKMARKS_BAR) {
             // Find all the folders
             manager.initLoader(LOADER_ID_ALL_FOLDERS, null, this);
         }
@@ -354,6 +362,40 @@
         }
     }
 
+    // FIXME: Use a CursorLoader
+    private long getBookmarksBarId(Context context) {
+        SharedPreferences prefs
+                = PreferenceManager.getDefaultSharedPreferences(context);
+        String accountName =
+                prefs.getString(BrowserBookmarksPage.PREF_ACCOUNT_NAME, null);
+        String accountType =
+                prefs.getString(BrowserBookmarksPage.PREF_ACCOUNT_TYPE, null);
+        if (TextUtils.isEmpty(accountName) || TextUtils.isEmpty(accountType)) {
+            return BrowserProvider2.FIXED_ID_BOOKMARKS_BAR;
+        }
+        Cursor cursor = null;
+        try {
+            cursor = context.getContentResolver().query(
+                    BrowserContract.Bookmarks.CONTENT_URI,
+                    new String[] { BrowserContract.Bookmarks._ID },
+                    BrowserContract.ChromeSyncColumns.SERVER_UNIQUE + "=? AND "
+                            + BrowserContract.Bookmarks.ACCOUNT_NAME + "=? AND "
+                            + BrowserContract.Bookmarks.ACCOUNT_TYPE + "=?",
+                    new String[] {
+                            BrowserContract.ChromeSyncColumns
+                                    .FOLDER_NAME_BOOKMARKS_BAR,
+                            accountName,
+                            accountType },
+                    null);
+            if (cursor != null && cursor.moveToFirst()) {
+                return cursor.getLong(0);
+            }
+        } finally {
+            if (cursor != null) cursor.close();
+        }
+        return BrowserProvider2.FIXED_ID_BOOKMARKS_BAR;
+    }
+
     @Override
     public boolean dispatchKeyEvent (KeyEvent event) {
         if (mFolderSelector.getVisibility() == View.VISIBLE
diff --git a/src/com/android/browser/provider/BrowserProvider2.java b/src/com/android/browser/provider/BrowserProvider2.java
index 973f229..e0520eb 100644
--- a/src/com/android/browser/provider/BrowserProvider2.java
+++ b/src/com/android/browser/provider/BrowserProvider2.java
@@ -89,7 +89,7 @@
 
     static final long FIXED_ID_CHROME_ROOT = 1;
     static final long FIXED_ID_BOOKMARKS = 2;
-    static final long FIXED_ID_BOOKMARKS_BAR = 3;
+    public static final long FIXED_ID_BOOKMARKS_BAR = 3;
     static final long FIXED_ID_OTHER_BOOKMARKS = 4;
 
     static final String DEFAULT_BOOKMARKS_SORT_ORDER = "position ASC, _id ASC";