Bug 1333518 - Don't import Samsung Internet folders as bookmarks. r?sebastian draft
authorTom Klein <twointofive@gmail.com>
Tue, 24 Jan 2017 12:13:15 -0600
changeset 465736 c3b4591dcc5d295aa2319192341999dee8a16e16
parent 464601 487a4e43eb9d1f04a5d8e3dd183fe38dbe105e1f
child 543235 3d3295e941e89ea0a299d025ec227fea481e6a97
push id42693
push userbmo:twointofive@gmail.com
push dateTue, 24 Jan 2017 19:24:38 +0000
reviewerssebastian
bugs1333518
milestone53.0a1
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
mobile/android/base/java/org/mozilla/gecko/preferences/AndroidImport.java
--- 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.