Bug 1234967 - Pre: pass entire HomeContextMenuInfo to RemoveItemByUrlTask draft
authorAndrzej Hunt <andrzej@ahunt.org>
Tue, 29 Mar 2016 11:06:09 -0700
changeset 450172 fb31841f24eddf71bb750dbf02532a09261d3de8
parent 449987 6dbc6e9f62a705d5f523cc750811bd01c8275ec6
child 450173 be2d0df120001724b973129818a52ceee767e6f4
push id38772
push userbmo:twointofive@gmail.com
push dateFri, 16 Dec 2016 03:01:04 +0000
bugs1234967
milestone53.0a1
Bug 1234967 - Pre: pass entire HomeContextMenuInfo to RemoveItemByUrlTask We'll need the bookmark ID to delete the correct bookmark. Rather than passing 3 separate variables we might as well just pass in the full site info. Rebased, with review comments addressed, by Tom Klein. MozReview-Commit-ID: AbkiYfYQC01
mobile/android/base/java/org/mozilla/gecko/home/BrowserSearch.java
mobile/android/base/java/org/mozilla/gecko/home/HomeFragment.java
--- a/mobile/android/base/java/org/mozilla/gecko/home/BrowserSearch.java
+++ b/mobile/android/base/java/org/mozilla/gecko/home/BrowserSearch.java
@@ -439,17 +439,17 @@ public class BrowserSearch extends HomeF
         final Context context = getActivity();
 
         final int itemId = item.getItemId();
 
         if (itemId == R.id.browsersearch_remove) {
             // Position for Top Sites grid items, but will always be -1 since this is only for BrowserSearch result
             final int position = -1;
 
-            new RemoveItemByUrlTask(context, info.url, info.itemType, position).execute();
+            new RemoveItemTask(context, info, position).execute();
             return true;
         }
 
         return false;
     }
 
     @Override
     public void onActivityCreated(Bundle savedInstanceState) {
--- a/mobile/android/base/java/org/mozilla/gecko/home/HomeFragment.java
+++ b/mobile/android/base/java/org/mozilla/gecko/home/HomeFragment.java
@@ -11,21 +11,19 @@ import org.mozilla.gecko.EditBookmarkDia
 import org.mozilla.gecko.GeckoAppShell;
 import org.mozilla.gecko.GeckoApplication;
 import org.mozilla.gecko.GeckoProfile;
 import org.mozilla.gecko.IntentHelper;
 import org.mozilla.gecko.R;
 import org.mozilla.gecko.SnackbarBuilder;
 import org.mozilla.gecko.Telemetry;
 import org.mozilla.gecko.TelemetryContract;
-import org.mozilla.gecko.db.BrowserContract;
 import org.mozilla.gecko.db.BrowserDB;
 import org.mozilla.gecko.db.BrowserContract.SuggestedSites;
 import org.mozilla.gecko.distribution.PartnerBookmarksProviderProxy;
-import org.mozilla.gecko.home.HomeContextMenuInfo.RemoveItemType;
 import org.mozilla.gecko.home.HomePager.OnUrlOpenInBackgroundListener;
 import org.mozilla.gecko.home.HomePager.OnUrlOpenListener;
 import org.mozilla.gecko.home.TopSitesGridView.TopSitesGridContextMenuInfo;
 import org.mozilla.gecko.reader.SavedReaderViewHelper;
 import org.mozilla.gecko.reader.ReadingListHelper;
 import org.mozilla.gecko.restrictions.Restrictable;
 import org.mozilla.gecko.restrictions.Restrictions;
 import org.mozilla.gecko.util.Clipboard;
@@ -299,17 +297,17 @@ public abstract class HomeFragment exten
 
         if (itemId == R.id.home_remove) {
             // For Top Sites grid items, position is required in case item is Pinned.
             final int position = info instanceof TopSitesGridContextMenuInfo ? info.position : -1;
 
             if (info.hasPartnerBookmarkId()) {
                 new RemovePartnerBookmarkTask(context, info.bookmarkId).execute();
             } else {
-                new RemoveItemByUrlTask(context, info.url, info.itemType, position).execute();
+                new RemoveItemTask(context, info, position).execute();
             }
             return true;
         }
 
         return false;
     }
 
     @Override
@@ -376,98 +374,96 @@ public abstract class HomeFragment exten
         if (!canLoad() || mIsLoaded) {
             return;
         }
 
         load();
         mIsLoaded = true;
     }
 
-    protected static class RemoveItemByUrlTask extends UIAsyncTask.WithoutParams<Void> {
+    protected static class RemoveItemTask extends UIAsyncTask.WithoutParams<Void> {
         private final Context mContext;
-        private final String mUrl;
-        private final RemoveItemType mType;
+        private final HomeContextMenuInfo mInfo;
         private final int mPosition;
         private final BrowserDB mDB;
 
         /**
-         * Remove bookmark/history/reading list type item by url, and also unpin the
-         * Top Sites grid item at index <code>position</code>.
+         * Remove bookmark/history/reading list type item, and also unpin the Top Sites grid item at
+         * index <code>position</code>.
          */
-        public RemoveItemByUrlTask(Context context, String url, RemoveItemType type, int position) {
+        public RemoveItemTask(Context context, HomeContextMenuInfo info, int position) {
             super(ThreadUtils.getBackgroundHandler());
 
             mContext = context;
-            mUrl = url;
-            mType = type;
+            mInfo = info;
             mPosition = position;
             mDB = BrowserDB.from(context);
         }
 
         @Override
         public Void doInBackground() {
             ContentResolver cr = mContext.getContentResolver();
 
             if (mPosition > -1) {
                 mDB.unpinSite(cr, mPosition);
-                if (mDB.hideSuggestedSite(mUrl)) {
+                if (mDB.hideSuggestedSite(mInfo.url)) {
                     cr.notifyChange(SuggestedSites.CONTENT_URI, null);
                 }
             }
 
-            switch (mType) {
+            switch (mInfo.itemType) {
                 case BOOKMARKS:
                     removeBookmark(cr);
                     break;
 
                 case HISTORY:
                     removeHistory(cr);
                     break;
 
                 case COMBINED:
                     removeBookmark(cr);
                     removeHistory(cr);
                     break;
 
                 default:
-                    Log.e(LOGTAG, "Can't remove item type " + mType.toString());
+                    Log.e(LOGTAG, "Can't remove item type " + mInfo.itemType.toString());
                     break;
             }
             return null;
         }
 
         @Override
         public void onPostExecute(Void result) {
             SnackbarBuilder.builder((Activity) mContext)
                     .message(R.string.page_removed)
                     .duration(Snackbar.LENGTH_LONG)
                     .buildAndShow();
         }
 
         private void removeBookmark(ContentResolver cr) {
             SavedReaderViewHelper rch = SavedReaderViewHelper.getSavedReaderViewHelper(mContext);
-            final boolean isReaderViewPage = rch.isURLCached(mUrl);
+            final boolean isReaderViewPage = rch.isURLCached(mInfo.url);
 
             final String extra;
             if (isReaderViewPage) {
                 extra = "bookmark_reader";
             } else {
                 extra = "bookmark";
             }
 
             Telemetry.sendUIEvent(TelemetryContract.Event.UNSAVE, TelemetryContract.Method.CONTEXT_MENU, extra);
-            mDB.removeBookmarksWithURL(cr, mUrl);
+            mDB.removeBookmarksWithURL(cr, mInfo.url);
 
             if (isReaderViewPage) {
-                ReadingListHelper.removeCachedReaderItem(mUrl, mContext);
+                ReadingListHelper.removeCachedReaderItem(mInfo.url, mContext);
             }
         }
 
         private void removeHistory(ContentResolver cr) {
-            mDB.removeHistoryEntry(cr, mUrl);
+            mDB.removeHistoryEntry(cr, mInfo.url);
         }
     }
 
     private static class RemovePartnerBookmarkTask extends UIAsyncTask.WithoutParams<Void> {
         private Context context;
         private long bookmarkId;
 
         public RemovePartnerBookmarkTask(Context context, long bookmarkId) {