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

Unified Diff: chrome/android/javatests/src/org/chromium/chrome/browser/contextmenu/ContextMenuTest.java

Issue 2710833002: Refactor ChromeContextMenuPopulator population (Closed)
Patch Set: Created 3 years, 10 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/javatests/src/org/chromium/chrome/browser/contextmenu/ContextMenuTest.java
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/contextmenu/ContextMenuTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/contextmenu/ContextMenuTest.java
index 2cd9ec8e90eb221a9250e38e6bc60cd7d2941922..dc188680e015a30ccedda6015155a282df4bc534 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/contextmenu/ContextMenuTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/contextmenu/ContextMenuTest.java
@@ -9,6 +9,7 @@ import android.content.ClipboardManager;
import android.content.Context;
import android.support.test.filters.LargeTest;
import android.support.test.filters.MediumTest;
+import android.support.test.filters.SmallTest;
import android.view.ContextMenu;
import android.view.KeyEvent;
@@ -34,6 +35,9 @@ import org.chromium.content.browser.test.util.TestTouchUtils;
import org.chromium.net.test.EmbeddedTestServer;
import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.TimeoutException;
import java.util.concurrent.atomic.AtomicReference;
@@ -348,6 +352,84 @@ public class ContextMenuTest extends DownloadTestBase {
assertEquals(imageUrl, tabModel.getTabAt(indexOfLinkPage2).getUrl());
}
+ @SmallTest
+ @Feature({"Browser", "ContextMenu"})
+ public void testContextMenuRetrievesLinkOptions()
+ throws TimeoutException, InterruptedException {
+ Tab tab = getActivity().getActivityTab();
+ ContextMenu menu = ContextMenuUtils.openContextMenu(this, tab, "testLink");
+
+ List<Integer> expectedItems = new ArrayList<>();
+ Collections.addAll(expectedItems, R.id.contextmenu_open_in_new_tab,
+ R.id.contextmenu_open_in_incognito_tab, R.id.contextmenu_copy_link_address,
+ R.id.contextmenu_copy_link_text, R.id.contextmenu_save_link_as);
+ assertTrue(confirmMenuList(menu, expectedItems));
+ }
+
+ @SmallTest
+ @Feature({"Browser", "ContextMenu"})
+ public void testContextMenuRetrievesImageOptions()
+ throws TimeoutException, InterruptedException {
+ Tab tab = getActivity().getActivityTab();
+ ContextMenu menu = ContextMenuUtils.openContextMenu(this, tab, "testImage");
+
+ List<Integer> expectedItems = new ArrayList<>();
+ Collections.addAll(expectedItems, R.id.contextmenu_save_image,
+ R.id.contextmenu_open_image_in_new_tab, R.id.contextmenu_search_by_image,
+ R.id.contextmenu_share_image);
+ assertTrue(confirmMenuList(menu, expectedItems));
+ }
+
+ @SmallTest
+ @Feature({"Browser", "ContextMenu"})
+ public void testContextMenuRetrievesImageLinkOptions()
+ throws TimeoutException, InterruptedException {
+ Tab tab = getActivity().getActivityTab();
+ ContextMenu menu = ContextMenuUtils.openContextMenu(this, tab, "testImageLink");
+
+ List<Integer> expectedItems = new ArrayList<>();
+ Collections.addAll(expectedItems, R.id.contextmenu_open_in_new_tab,
+ R.id.contextmenu_open_in_incognito_tab, R.id.contextmenu_copy_link_address,
+ R.id.contextmenu_save_link_as, R.id.contextmenu_save_image,
+ R.id.contextmenu_open_image_in_new_tab, R.id.contextmenu_search_by_image,
+ R.id.contextmenu_share_image);
+ assertTrue(confirmMenuList(menu, expectedItems));
+ }
+
+ @SmallTest
+ @Feature({"Browser", "ContextMenu"})
+ public void testContextMenuRetrievesVideoOptions()
+ throws TimeoutException, InterruptedException {
+ Tab tab = getActivity().getActivityTab();
+ DOMUtils.clickNode(this, getActivity().getCurrentContentViewCore(), "videoDOMElement");
+ ContextMenu menu = ContextMenuUtils.openContextMenu(this, tab, "videoDOMElement");
+
+ List<Integer> expectedItems = new ArrayList<>();
+ expectedItems.add(R.id.contextmenu_save_video);
+ assertTrue(confirmMenuList(menu, expectedItems));
+ }
+
+ /**
+ * Takes all the visible items on the menu and compares them to a the list of expected items.
+ * @param menu A context menu that is displaying visible items.
+ * @param expectedItems A list of items that is expected to appear within a context menu.
+ * @return Returns true when all the items in the menu are equal to the expectedItems.
+ */
+ private boolean confirmMenuList(ContextMenu menu, List<Integer> expectedItems) {
JJ 2017/02/22 00:57:43 Preemptive comment! For a while I thought of putti
David Trainor- moved to gerrit 2017/02/22 05:36:33 I see your point. IMO the (debatable) useful piec
JJ 2017/02/22 19:09:39 Interesting! I didn't think of it with line number
+ List<Integer> actualItems = new ArrayList<>();
+ for (int i = 0; i < menu.size(); i++) {
+ if (menu.getItem(i).isVisible()) {
+ actualItems.add(menu.getItem(i).getItemId());
+ }
+ }
+ // Leave the O(n logn) sort for when they're the same size
+ if (actualItems.size() != expectedItems.size()) return false;
+
+ Collections.sort(expectedItems);
+ Collections.sort(actualItems);
+ return actualItems.equals(expectedItems);
+ }
+
private void saveMediaFromContextMenu(String mediaDOMElement, int saveMenuID,
String expectedFilename) throws InterruptedException, TimeoutException,
SecurityException, IOException {

Powered by Google App Engine
This is Rietveld 408576698