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
--- 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) {