Bug 1234316 - Post: remove reading list read/unread items from homepanel context menu r=liuche
MozReview-Commit-ID: DPOc8TyUFVv
--- a/mobile/android/base/java/org/mozilla/gecko/home/HomeContextMenuInfo.java
+++ b/mobile/android/base/java/org/mozilla/gecko/home/HomeContextMenuInfo.java
@@ -19,43 +19,37 @@ import android.widget.ListAdapter;
*/
public class HomeContextMenuInfo extends AdapterContextMenuInfo {
public String url;
public String title;
public boolean isFolder;
public int historyId = -1;
public int bookmarkId = -1;
- public int readingListItemId = -1;
- public boolean isUnread;
public RemoveItemType itemType = null;
// Item type to be handled with "Remove" selection.
public static enum RemoveItemType {
- BOOKMARKS, HISTORY, READING_LIST
+ BOOKMARKS, HISTORY
}
public HomeContextMenuInfo(View targetView, int position, long id) {
super(targetView, position, id);
}
public boolean hasBookmarkId() {
return bookmarkId > -1;
}
public boolean hasHistoryId() {
return historyId > -1;
}
- public boolean isInReadingList() {
- return readingListItemId > -1;
- }
-
public boolean canRemove() {
- return hasBookmarkId() || hasHistoryId() || isInReadingList();
+ return hasBookmarkId() || hasHistoryId();
}
public String getDisplayTitle() {
if (!TextUtils.isEmpty(title)) {
return title;
}
return StringUtils.stripCommonSubdomains(StringUtils.stripScheme(url, StringUtils.UrlFlags.STRIP_HTTPS));
}
--- a/mobile/android/base/java/org/mozilla/gecko/home/HomeFragment.java
+++ b/mobile/android/base/java/org/mozilla/gecko/home/HomeFragment.java
@@ -4,20 +4,18 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package org.mozilla.gecko.home;
import java.util.EnumSet;
import org.mozilla.gecko.EditBookmarkDialog;
import org.mozilla.gecko.GeckoAppShell;
-import org.mozilla.gecko.GeckoEvent;
import org.mozilla.gecko.GeckoProfile;
import org.mozilla.gecko.R;
-import org.mozilla.gecko.reader.ReaderModeUtils;
import org.mozilla.gecko.Restrictions;
import org.mozilla.gecko.SnackbarHelper;
import org.mozilla.gecko.Telemetry;
import org.mozilla.gecko.TelemetryContract;
import org.mozilla.gecko.db.BrowserDB;
import org.mozilla.gecko.db.BrowserContract.SuggestedSites;
import org.mozilla.gecko.home.HomeContextMenuInfo.RemoveItemType;
import org.mozilla.gecko.home.HomePager.OnUrlOpenInBackgroundListener;
@@ -135,35 +133,32 @@ public abstract class HomeFragment exten
// Hide unused menu items.
menu.findItem(R.id.top_sites_edit).setVisible(false);
menu.findItem(R.id.top_sites_pin).setVisible(false);
menu.findItem(R.id.top_sites_unpin).setVisible(false);
// Hide the "Edit" menuitem if this item isn't a bookmark,
// or if this is a reading list item.
- if (!info.hasBookmarkId() || info.isInReadingList()) {
+ if (!info.hasBookmarkId()) {
menu.findItem(R.id.home_edit_bookmark).setVisible(false);
}
// Hide the "Remove" menuitem if this item not removable.
if (!info.canRemove()) {
menu.findItem(R.id.home_remove).setVisible(false);
}
if (!StringUtils.isShareableUrl(info.url) || GeckoProfile.get(getActivity()).inGuestMode()) {
menu.findItem(R.id.home_share).setVisible(false);
}
if (!Restrictions.isAllowed(view.getContext(), Restrictable.PRIVATE_BROWSING)) {
menu.findItem(R.id.home_open_private_tab).setVisible(false);
}
-
- menu.findItem(R.id.mark_read).setVisible(info.isInReadingList() && info.isUnread);
- menu.findItem(R.id.mark_unread).setVisible(info.isInReadingList() && !info.isUnread);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
// onContextItemSelected() is first dispatched to the activity and
// then dispatched to its fragments. Since fragments cannot "override"
// menu item selection handling, it's better to avoid menu id collisions
// between the activity and its fragments.
@@ -235,19 +230,17 @@ public abstract class HomeFragment exten
Log.e(LOGTAG, "Can't open in new tab because URL is null");
return false;
}
// Some pinned site items have "user-entered" urls. URLs entered in
// the PinSiteDialog are wrapped in a special URI until we can get a
// valid URL. If the url is a user-entered url, decode the URL
// before loading it.
- final String url = StringUtils.decodeUserEnteredUrl(info.isInReadingList()
- ? ReaderModeUtils.getAboutReaderForUrl(info.url)
- : info.url);
+ final String url = StringUtils.decodeUserEnteredUrl(info.url);
final EnumSet<OnUrlOpenInBackgroundListener.Flags> flags = EnumSet.noneOf(OnUrlOpenInBackgroundListener.Flags.class);
if (item.getItemId() == R.id.home_open_private_tab) {
flags.add(OnUrlOpenInBackgroundListener.Flags.PRIVATE);
}
mUrlOpenInBackgroundListener.onUrlOpenInBackground(url, flags);
@@ -265,32 +258,16 @@ 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;
(new RemoveItemByUrlTask(context, info.url, info.itemType, position)).execute();
return true;
}
- if (itemId == R.id.mark_read) {
- GeckoProfile
- .get(context)
- .getDB()
- .getReadingListAccessor()
- .markAsRead(context.getContentResolver(), info.id);
- }
-
- if (itemId == R.id.mark_unread) {
- GeckoProfile
- .get(context)
- .getDB()
- .getReadingListAccessor()
- .markAsUnread(context.getContentResolver(), info.id);
- }
-
return false;
}
@Override
public void setUserVisibleHint (boolean isVisibleToUser) {
if (isVisibleToUser == getUserVisibleHint()) {
return;
}
@@ -395,22 +372,16 @@ public abstract class HomeFragment exten
Telemetry.sendUIEvent(TelemetryContract.Event.UNSAVE, TelemetryContract.Method.CONTEXT_MENU, "bookmark");
mDB.removeBookmarksWithURL(cr, mUrl);
break;
case HISTORY:
mDB.removeHistoryEntry(cr, mUrl);
break;
- case READING_LIST:
- Telemetry.sendUIEvent(TelemetryContract.Event.UNSAVE, TelemetryContract.Method.CONTEXT_MENU, "reading_list");
- mDB.getReadingListAccessor().removeReadingListItemWithURL(cr, mUrl);
- GeckoAppShell.sendEventToGecko(GeckoEvent.createBroadcastEvent("Reader:Removed", mUrl));
- break;
-
default:
Log.e(LOGTAG, "Can't remove item type " + mType.toString());
break;
}
return null;
}
@Override
--- a/mobile/android/base/java/org/mozilla/gecko/home/TopSitesPanel.java
+++ b/mobile/android/base/java/org/mozilla/gecko/home/TopSitesPanel.java
@@ -346,20 +346,16 @@ public class TopSitesPanel extends HomeF
if (!StringUtils.isShareableUrl(info.url) || GeckoProfile.get(getActivity()).inGuestMode()) {
menu.findItem(R.id.home_share).setVisible(false);
}
if (!Restrictions.isAllowed(context, Restrictable.PRIVATE_BROWSING)) {
menu.findItem(R.id.home_open_private_tab).setVisible(false);
}
-
- // We only show these menu items on the reading list panel:
- menu.findItem(R.id.mark_read).setVisible(false);
- menu.findItem(R.id.mark_unread).setVisible(false);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
if (super.onContextItemSelected(item)) {
// HomeFragment was able to handle to selected item.
return true;
}
--- a/mobile/android/base/locales/en-US/android_strings.dtd
+++ b/mobile/android/base/locales/en-US/android_strings.dtd
@@ -427,18 +427,16 @@ size. -->
<!ENTITY contextmenu_copyurl "Copy Address">
<!ENTITY contextmenu_edit_bookmark "Edit">
<!ENTITY contextmenu_subscribe "Subscribe to Page">
<!ENTITY contextmenu_site_settings "Edit Site Settings">
<!ENTITY contextmenu_top_sites_edit "Edit">
<!ENTITY contextmenu_top_sites_pin "Pin Site">
<!ENTITY contextmenu_top_sites_unpin "Unpin Site">
<!ENTITY contextmenu_add_search_engine "Add a Search Engine">
-<!ENTITY contextmenu_mark_read "Mark as read">
-<!ENTITY contextmenu_mark_unread "Mark as unread">
<!-- Localization note (doorhanger_login_no_username): This string is used in the save-login doorhanger
where normally a username would be displayed. In this case, no username was found, and this placeholder
contains brackets to indicate this is not actually a username, but rather a placeholder -->
<!ENTITY doorhanger_login_no_username "[No username]">
<!ENTITY doorhanger_login_edit_title "Edit login">
<!ENTITY doorhanger_login_edit_username_hint "Username">
<!ENTITY doorhanger_login_edit_password_hint "Password">
--- a/mobile/android/base/resources/menu/home_contextmenu.xml
+++ b/mobile/android/base/resources/menu/home_contextmenu.xml
@@ -24,21 +24,15 @@
android:title="@string/contextmenu_top_sites_pin"/>
<item android:id="@+id/top_sites_unpin"
android:title="@string/contextmenu_top_sites_unpin"/>
<item android:id="@+id/home_edit_bookmark"
android:title="@string/contextmenu_edit_bookmark"/>
- <item android:id="@+id/mark_read"
- android:title="@string/contextmenu_mark_read" />
-
- <item android:id="@+id/mark_unread"
- android:title="@string/contextmenu_mark_unread" />
-
<item android:id="@+id/home_remove"
android:title="@string/contextmenu_remove"/>
<item android:id="@+id/home_add_to_launcher"
android:title="@string/contextmenu_add_to_launcher"/>
</menu>
--- a/mobile/android/base/strings.xml.in
+++ b/mobile/android/base/strings.xml.in
@@ -370,18 +370,16 @@
<string name="contextmenu_copyurl">&contextmenu_copyurl;</string>
<string name="contextmenu_edit_bookmark">&contextmenu_edit_bookmark;</string>
<string name="contextmenu_subscribe">&contextmenu_subscribe;</string>
<string name="contextmenu_site_settings">&contextmenu_site_settings;</string>
<string name="contextmenu_top_sites_edit">&contextmenu_top_sites_edit;</string>
<string name="contextmenu_top_sites_pin">&contextmenu_top_sites_pin;</string>
<string name="contextmenu_top_sites_unpin">&contextmenu_top_sites_unpin;</string>
<string name="contextmenu_add_search_engine">&contextmenu_add_search_engine;</string>
- <string name="contextmenu_mark_read">&contextmenu_mark_read;</string>
- <string name="contextmenu_mark_unread">&contextmenu_mark_unread;</string>
<string name="doorhanger_login_no_username">&doorhanger_login_no_username;</string>
<string name="doorhanger_login_edit_title">&doorhanger_login_edit_title;</string>
<string name="doorhanger_login_edit_username_hint">&doorhanger_login_edit_username_hint;</string>
<string name="doorhanger_login_edit_password_hint">&doorhanger_login_edit_password_hint;</string>
<string name="doorhanger_login_edit_toggle">&doorhanger_login_edit_toggle;</string>
<string name="doorhanger_login_edit_toast_error">&doorhanger_login_edit_toast_error;</string>
<string name="doorhanger_login_select_message">&doorhanger_login_select_message;</string>