Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2023)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/ntp/MostVisitedItem.java

Issue 2452543005: 🏠 Merge the context menu code for NTP tiles and suggestions (Closed)
Patch Set: address comments Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/ntp/MostVisitedItem.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/MostVisitedItem.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/MostVisitedItem.java
index 0207bc294cbd2ccbaa6efc51404526f31fb18a27..27b248c76b0f03b39f3a81fc470fb204de106c1f 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/MostVisitedItem.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/MostVisitedItem.java
@@ -6,47 +6,31 @@
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
-import android.view.MenuItem;
-import android.view.MenuItem.OnMenuItemClickListener;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnCreateContextMenuListener;
+import org.chromium.chrome.browser.ntp.ContextMenuHandler.TouchDisableableView;
+import org.chromium.chrome.browser.ntp.NewTabPageView.NewTabPageManager;
+import org.chromium.ui.mojom.WindowOpenDisposition;
+
/**
* Displays the title, thumbnail, and favicon of a most visited page. The item can be clicked, or
* long-pressed to trigger a context menu with options to "open in new tab", "open in incognito
* tab", or "remove".
*/
-public class MostVisitedItem implements OnCreateContextMenuListener,
- MenuItem.OnMenuItemClickListener, OnClickListener {
-
+public class MostVisitedItem
+ implements OnCreateContextMenuListener, OnClickListener, ContextMenuHandler.Delegate {
/**
* Interface for an object that handles callbacks from a MostVisitedItem.
*/
public interface MostVisitedItemManager {
- /**
- * Navigates to a most visited page in the existing tab.
- * @param item The most visited item to open.
- */
- void openMostVisitedItem(MostVisitedItem item);
-
- /**
- * Allows the manager to add context menu items for a given MostVisitedItem.
- * @param menu The context menu that should be used to add menu items.
- * @param listener Listener that should get the callbacks for context menu selections.
- */
- void onCreateContextMenu(ContextMenu menu, OnMenuItemClickListener listener);
-
- /**
- * Handles context menu item clicks.
- * @param menuId Id of the menu item that was selected.
- * @param item MostVisitedItem that triggered the context menu.
- * @return Whether a menu item was selected successfully.
- */
- boolean onMenuItemClick(int menuId, MostVisitedItem item);
- }
-
- private MostVisitedItemManager mManager;
+ void removeMostVisitedItem(MostVisitedItem item);
+
+ void openMostVisitedItem(int windowDisposition, MostVisitedItem item);
+ }
+
+ private NewTabPageManager mManager;
private String mTitle;
private String mUrl;
private String mWhitelistIconPath;
@@ -55,6 +39,7 @@
private int mTileType;
private int mSource;
private View mView;
+ private TouchDisableableView mWrapperView;
/**
* Constructs a MostVisitedItem with the given manager, title, URL, whitelist icon path, index,
@@ -67,9 +52,9 @@
* visited item. Empty otherwise.
* @param offlineAvailable Whether there is an offline copy of the URL available.
* @param index The index of this item in the list of most visited items.
- * @param source The {@link MostVisitedSource} that generated this item.
+ * @param source The {@code MostVisitedSource} that generated this item.
*/
- public MostVisitedItem(MostVisitedItemManager manager, String title, String url,
+ public MostVisitedItem(NewTabPageManager manager, String title, String url,
String whitelistIconPath, boolean offlineAvailable, int index, int source) {
mManager = manager;
mTitle = title;
@@ -85,9 +70,10 @@ public MostVisitedItem(MostVisitedItemManager manager, String title, String url,
* Sets the view that will display this item. MostVisitedItem will handle clicks on the view.
* This should be called exactly once.
*/
- public void initView(View view) {
+ public void initView(View view, TouchDisableableView parent) {
assert mView == null;
mView = view;
+ mWrapperView = parent;
mView.setOnClickListener(this);
mView.setOnCreateContextMenuListener(this);
}
@@ -159,7 +145,7 @@ public void setTileType(int type) {
/**
* @return The source of this item. Used for metrics tracking. Valid values are listed in
- * {@link MostVisitedSource}.
+ * {@code MostVisitedSource}.
*/
public int getSource() {
return mSource;
@@ -167,16 +153,27 @@ public int getSource() {
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
- mManager.onCreateContextMenu(menu, this);
+ new ContextMenuHandler(mManager, mWrapperView, this)
+ .onCreateContextMenu(menu);
}
@Override
- public boolean onMenuItemClick(MenuItem item) {
- return mManager.onMenuItemClick(item.getItemId(), this);
+ public void onClick(View v) {
+ mManager.openMostVisitedItem(WindowOpenDisposition.CURRENT_TAB, MostVisitedItem.this);
}
@Override
- public void onClick(View v) {
- mManager.openMostVisitedItem(this);
+ public void openItem(int windowDisposition) {
+ mManager.openMostVisitedItem(windowDisposition, MostVisitedItem.this);
+ }
+
+ @Override
+ public void removeItem() {
+ mManager.removeMostVisitedItem(MostVisitedItem.this);
+ }
+
+ @Override
+ public boolean canBeSavedOffline() {
+ return false;
}
}

Powered by Google App Engine
This is Rietveld 408576698