Bug 1333518 - Don't import Samsung Internet folders as bookmarks. r?sebastian
The Samsung Internet content provider provides both bookmarks and folders,
distinguished by "bookmark_type" (equals 0 for folder, 1 for bookmark). We're
currently importing both types, with folders getting inserted into our db with a
url of null. Such "bookmarks" never seem to surface in UI, and sync ignores
them, but let's stop importing them anyway.
MozReview-Commit-ID: 7G3QuEYBgRb
--- a/mobile/android/base/java/org/mozilla/gecko/preferences/AndroidImport.java
+++ b/mobile/android/base/java/org/mozilla/gecko/preferences/AndroidImport.java
@@ -48,16 +48,17 @@ public class AndroidImport implements Ru
public static final String TITLE = "title";
public static final String CREATED = "created";
public static final String FAVICON = "favicon";
}
}
public static final Uri SAMSUNG_BOOKMARKS_URI = Uri.parse("content://com.sec.android.app.sbrowser.browser/bookmarks");
public static final Uri SAMSUNG_HISTORY_URI = Uri.parse("content://com.sec.android.app.sbrowser.browser/history");
+ public static final String SAMSUNG_BOOKMARK_TYPE = "bookmark_type";
public static final String SAMSUNG_MANUFACTURER = "samsung";
private static final String LOGTAG = "AndroidImport";
private final Context mContext;
private final Runnable mOnDoneRunnable;
private final ArrayList<ContentProviderOperation> mOperations;
private final ContentResolver mCr;
private final LocalBrowserDB mDB;
@@ -74,18 +75,19 @@ public class AndroidImport implements Ru
mImportBookmarks = doBookmarks;
mImportHistory = doHistory;
}
public void mergeBookmarks() {
Cursor cursor = null;
try {
cursor = query(LegacyBrowserProvider.BOOKMARKS_URI,
- SAMSUNG_BOOKMARKS_URI,
- LegacyBrowserProvider.BookmarkColumns.BOOKMARK + " = 1");
+ LegacyBrowserProvider.BookmarkColumns.BOOKMARK + " = 1",
+ SAMSUNG_BOOKMARKS_URI,
+ SAMSUNG_BOOKMARK_TYPE + " = 1");
if (cursor != null) {
final int faviconCol = cursor.getColumnIndexOrThrow(LegacyBrowserProvider.BookmarkColumns.FAVICON);
final int titleCol = cursor.getColumnIndexOrThrow(LegacyBrowserProvider.BookmarkColumns.TITLE);
final int urlCol = cursor.getColumnIndexOrThrow(LegacyBrowserProvider.BookmarkColumns.URL);
// http://code.google.com/p/android/issues/detail?id=17969
final int createCol = cursor.getColumnIndex(LegacyBrowserProvider.BookmarkColumns.CREATED);
@@ -120,20 +122,21 @@ public class AndroidImport implements Ru
flushBatchOperations();
}
public void mergeHistory() {
ArrayList<ContentValues> visitsToSynthesize = new ArrayList<>();
Cursor cursor = null;
try {
- cursor = query (LegacyBrowserProvider.BOOKMARKS_URI,
- SAMSUNG_HISTORY_URI,
- LegacyBrowserProvider.BookmarkColumns.BOOKMARK + " = 0 AND " +
- LegacyBrowserProvider.BookmarkColumns.VISITS + " > 0");
+ cursor = query(LegacyBrowserProvider.BOOKMARKS_URI,
+ LegacyBrowserProvider.BookmarkColumns.BOOKMARK + " = 0 AND " +
+ LegacyBrowserProvider.BookmarkColumns.VISITS + " > 0",
+ SAMSUNG_HISTORY_URI,
+ null);
if (cursor != null) {
final int dateCol = cursor.getColumnIndexOrThrow(LegacyBrowserProvider.BookmarkColumns.DATE);
final int faviconCol = cursor.getColumnIndexOrThrow(LegacyBrowserProvider.BookmarkColumns.FAVICON);
final int titleCol = cursor.getColumnIndexOrThrow(LegacyBrowserProvider.BookmarkColumns.TITLE);
final int urlCol = cursor.getColumnIndexOrThrow(LegacyBrowserProvider.BookmarkColumns.URL);
final int visitsCol = cursor.getColumnIndexOrThrow(LegacyBrowserProvider.BookmarkColumns.VISITS);
@@ -186,23 +189,23 @@ public class AndroidImport implements Ru
}
final DiskStorage storage = DiskStorage.get(mContext);
storage.putIcon(url, bitmap);
storage.putMapping(url, iconUrl);
}
- protected Cursor query(Uri mainUri, Uri fallbackUri, String condition) {
- final Cursor cursor = mCr.query(mainUri, null, condition, null, null);
+ protected Cursor query(Uri mainUri, String mainCondition, Uri fallbackUri, String fallbackCondition) {
+ final Cursor cursor = mCr.query(mainUri, null, mainCondition, null, null);
if (Build.MANUFACTURER.equals(SAMSUNG_MANUFACTURER) && (cursor == null || cursor.getCount() == 0)) {
if (cursor != null) {
cursor.close();
}
- return mCr.query(fallbackUri, null, null, null, null);
+ return mCr.query(fallbackUri, null, fallbackCondition, null, null);
}
return cursor;
}
protected void flushBatchOperations() {
Log.d(LOGTAG, "Flushing " + mOperations.size() + " DB operations");
try {
// We don't really care for the results, this is best-effort.