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

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

Issue 73173002: Add ContextMenu support upstream for Android (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Added tests, addressed comments Created 7 years, 1 month 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/ContextMenuUtils.java
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/contextmenu/ContextMenuUtils.java b/chrome/android/javatests/src/org/chromium/chrome/browser/contextmenu/ContextMenuUtils.java
new file mode 100644
index 0000000000000000000000000000000000000000..3fa382bfd74fd30d8451729fed5c608a5e9760fb
--- /dev/null
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/contextmenu/ContextMenuUtils.java
@@ -0,0 +1,88 @@
+// Copyright 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.browser.contextmenu;
+
+import android.test.ActivityInstrumentationTestCase2;
+import android.text.TextUtils;
+import android.view.ContextMenu;
+import android.view.MenuItem;
+
+import junit.framework.Assert;
+
+import org.chromium.chrome.browser.TabBase;
+import org.chromium.chrome.browser.TabBaseTabUtils.TestCallbackHelperContainerForTab;
+import org.chromium.content.browser.test.util.Criteria;
+import org.chromium.content.browser.test.util.CriteriaHelper;
+import org.chromium.content.browser.test.util.DOMUtils;
+
+import java.util.concurrent.TimeoutException;
+
+public class ContextMenuUtils {
+ public static ContextMenu openContextMenu(ActivityInstrumentationTestCase2 testCase,
+ TabBase tab, TestCallbackHelperContainerForTab client, String openerDOMNodeId)
+ throws InterruptedException, TimeoutException {
+ TestCallbackHelperContainerForTab.OnContextMenuShownHelper helper =
+ client.getOnContextMenuShownHelper();
+
+ int callCount = helper.getCallCount();
+ DOMUtils.longPressNode(testCase, tab.getContentView(), client, openerDOMNodeId);
+
+ helper.waitForCallback(callCount);
+ return helper.getContextMenu();
+ }
+
+ public static void selectContextMenuItem(ActivityInstrumentationTestCase2 testCase,
+ TabBase tab, TestCallbackHelperContainerForTab client, String openerDOMNodeId,
+ final int itemId) throws InterruptedException, TimeoutException {
+ ContextMenu menu = openContextMenu(testCase, tab, client, openerDOMNodeId);
+ Assert.assertNotNull("Failed to open context menu", menu);
+
+ selectOpenContextMenuItem(testCase, menu, itemId);
+ }
+
+ public static void selectContextMenuItemByTitle(ActivityInstrumentationTestCase2 testCase,
+ TabBase tab, TestCallbackHelperContainerForTab client, String openerDOMNodeId,
+ String itemTitle) throws InterruptedException, TimeoutException {
+
+ ContextMenu menu = openContextMenu(testCase, tab, client, openerDOMNodeId);
+ Assert.assertNotNull("Failed to open context menu", menu);
+
+ Integer itemId = null;
+ for (int i = 0; i < menu.size(); i++) {
+ MenuItem item = menu.getItem(i);
+ if (TextUtils.equals(item.getTitle(), itemTitle)) {
+ itemId = item.getItemId();
+ break;
+ }
+ }
+ Assert.assertNotNull("Couldn't find context menu item for '" + itemTitle + "'", itemId);
+
+ selectOpenContextMenuItem(testCase, menu, itemId);
+ }
+
+ private static void selectOpenContextMenuItem(final ActivityInstrumentationTestCase2 testCase,
+ final ContextMenu menu, final int itemId) throws InterruptedException {
+ MenuItem item = menu.findItem(itemId);
+ Assert.assertNotNull("Could not find '" + itemId + "' in menu", item);
+ Assert.assertTrue("'" + itemId + "' is not visible", item.isVisible());
+ Assert.assertTrue("'" + itemId + "' is not enabled", item.isEnabled());
+
+ testCase.getInstrumentation().runOnMainSync(new Runnable() {
+ @Override
+ public void run() {
+ boolean activated = menu.performIdentifierAction(itemId, 0);
+ Assert.assertTrue("Failed to activate '" + itemId + "' in menu", activated);
+ }
+ });
+
+ Assert.assertTrue("Activity did not regain focus.",
+ CriteriaHelper.pollForCriteria(new Criteria() {
+ @Override
+ public boolean isSatisfied() {
+ return testCase.getActivity().hasWindowFocus();
+ }
+ }));
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698