Bug 753534 - Desktop Bookmarks folder is created after migration from XUL to Native. r=lucasr

This commit is contained in:
Margaret Leibovic 2012-05-10 12:08:36 -07:00
Родитель 0ff66b2175
Коммит 9de21c0190
1 изменённых файлов: 18 добавлений и 5 удалений

Просмотреть файл

@ -40,6 +40,7 @@
package org.mozilla.gecko.db; package org.mozilla.gecko.db;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.util.HashMap;
import org.mozilla.gecko.db.BrowserContract.Bookmarks; import org.mozilla.gecko.db.BrowserContract.Bookmarks;
import org.mozilla.gecko.db.BrowserContract.History; import org.mozilla.gecko.db.BrowserContract.History;
@ -76,6 +77,9 @@ public class LocalBrowserDB implements BrowserDB.BrowserDBIface {
private final String mProfile; private final String mProfile;
private long mMobileFolderId; private long mMobileFolderId;
// Map of folder GUIDs to IDs. Used for caching.
private HashMap<String, Long> mFolderIdMap;
// Use wrapped Boolean so that we can have a null state // Use wrapped Boolean so that we can have a null state
private Boolean mDesktopBookmarksExist; private Boolean mDesktopBookmarksExist;
@ -100,6 +104,7 @@ public class LocalBrowserDB implements BrowserDB.BrowserDBIface {
public LocalBrowserDB(String profile) { public LocalBrowserDB(String profile) {
mProfile = profile; mProfile = profile;
mMobileFolderId = -1; mMobileFolderId = -1;
mFolderIdMap = new HashMap<String, Long>();
mDesktopBookmarksExist = null; mDesktopBookmarksExist = null;
mBookmarksUriWithProfile = appendProfile(Bookmarks.CONTENT_URI); mBookmarksUriWithProfile = appendProfile(Bookmarks.CONTENT_URI);
@ -346,12 +351,16 @@ public class LocalBrowserDB implements BrowserDB.BrowserDBIface {
Cursor c = null; Cursor c = null;
int count = 0; int count = 0;
try { try {
// Check to see if there are any bookmarks in one of our three
// fixed "Desktop Boomarks" folders.
c = cr.query(bookmarksUriWithLimit(1), c = cr.query(bookmarksUriWithLimit(1),
new String[] { Bookmarks._ID }, new String[] { Bookmarks._ID },
Bookmarks.PARENT + " != ? AND " + Bookmarks.PARENT + " = ? OR " +
Bookmarks.PARENT + " != ?", Bookmarks.PARENT + " = ? OR " +
new String[] { String.valueOf(getMobileBookmarksFolderId(cr)), Bookmarks.PARENT + " = ?",
String.valueOf(Bookmarks.FIXED_ROOT_ID) }, new String[] { String.valueOf(getFolderIdFromGuid(cr, Bookmarks.TOOLBAR_FOLDER_GUID)),
String.valueOf(getFolderIdFromGuid(cr, Bookmarks.MENU_FOLDER_GUID)),
String.valueOf(getFolderIdFromGuid(cr, Bookmarks.UNFILED_FOLDER_GUID)) },
null); null);
count = c.getCount(); count = c.getCount();
} finally { } finally {
@ -402,7 +411,10 @@ public class LocalBrowserDB implements BrowserDB.BrowserDBIface {
return mMobileFolderId; return mMobileFolderId;
} }
private long getFolderIdFromGuid(ContentResolver cr, String guid) { private synchronized long getFolderIdFromGuid(ContentResolver cr, String guid) {
if (mFolderIdMap.containsKey(guid))
return mFolderIdMap.get(guid);
long folderId = -1; long folderId = -1;
Cursor c = null; Cursor c = null;
@ -420,6 +432,7 @@ public class LocalBrowserDB implements BrowserDB.BrowserDBIface {
c.close(); c.close();
} }
mFolderIdMap.put(guid, folderId);
return folderId; return folderId;
} }