When canceling folder selection, go back to showing correct folder.

Bug:3364093
Change-Id: Ia50a601adb22a18570d9f8268c2c64185410bc99
diff --git a/src/com/android/browser/AddBookmarkPage.java b/src/com/android/browser/AddBookmarkPage.java
index a93a518..ee080ca 100644
--- a/src/com/android/browser/AddBookmarkPage.java
+++ b/src/com/android/browser/AddBookmarkPage.java
@@ -105,7 +105,7 @@
     private View mFolderNamerHolder;
     private View mAddNewFolder;
     private View mAddSeparator;
-    private long mCurrentFolder = 0;
+    private long mCurrentFolder;
     private FolderAdapter mAdapter;
     private BreadCrumbView mCrumbs;
     private TextView mFakeTitle;
@@ -218,8 +218,26 @@
             if (mSaveToHomeScreen) {
                 mFolder.setSelectionIgnoringSelectionChange(0);
             } else {
-                // FIXME: Need to find the actual folder.
-                mFolder.setSelectionIgnoringSelectionChange(mEditingFolder ? 0 : 1);
+                if (mCurrentFolder == mRootFolder) {
+                    mFolder.setSelectionIgnoringSelectionChange(mEditingFolder ? 0 : 1);
+                } else {
+                    Object data = mCrumbs.getTopData();
+                    if (data != null && ((Folder) data).Id == mCurrentFolder) {
+                        // We are showing the correct folder heirarchy. The
+                        // folder selector will say "Other folder..."  Change it
+                        // to say the name of the folder once again.
+                        ((TextView) mFolder.getSelectedView()).setText(((Folder) data).Name);
+                    } else {
+                        // We are not be showing the correct folder heirarchy.
+                        // Clear the Crumbs and find the proper folder
+                        mCrumbs.clear();
+                        setupTopCrumb();
+                        LoaderManager manager = getLoaderManager();
+                        manager.restartLoader(LOADER_ID_ALL_FOLDERS, null, this);
+                        manager.restartLoader(LOADER_ID_FOLDER_CONTENTS, null, this);
+
+                    }
+                }
             }
         }
     }
@@ -709,11 +727,7 @@
         if (mCurrentFolder == DEFAULT_FOLDER_ID) {
             mCurrentFolder = mRootFolder;
         }
-        String name = getString(R.string.bookmarks);
-        mTopLevelLabel = (TextView) mCrumbs.pushView(name, false,
-                new Folder(name, mRootFolder));
-        // To better match the other folders.
-        mTopLevelLabel.setCompoundDrawablePadding(6);
+        setupTopCrumb();
         if (mEditingExisting || TextUtils.isEmpty(mOriginalUrl)) {
             onCurrentFolderFound();
         } else {
@@ -724,6 +738,14 @@
         }
     }
 
+    private void setupTopCrumb() {
+        String name = getString(R.string.bookmarks);
+        mTopLevelLabel = (TextView) mCrumbs.pushView(name, false,
+                new Folder(name, mRootFolder));
+        // To better match the other folders.
+        mTopLevelLabel.setCompoundDrawablePadding(6);
+    }
+
     private void onCurrentFolderFound() {
         LoaderManager manager = getLoaderManager();
         if (mCurrentFolder != mRootFolder) {