Chromium Code Reviews| 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) { |
| + 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; |
|
Ted C
2017/02/28 06:10:13
if the sizes are the same, couldn't all the number
JJ
2017/03/01 01:41:04
Done.
|
| + |
| + Collections.sort(expectedItems); |
| + Collections.sort(actualItems); |
| + return actualItems.equals(expectedItems); |
|
Ted C
2017/02/28 06:10:13
You might also be able to use this:
https://develo
JJ
2017/03/01 01:41:04
Done.
|
| + } |
| + |
| private void saveMediaFromContextMenu(String mediaDOMElement, int saveMenuID, |
| String expectedFilename) throws InterruptedException, TimeoutException, |
| SecurityException, IOException { |