OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 package org.chromium.chrome.test.util.browser.contextmenu; | 5 package org.chromium.chrome.test.util.browser.contextmenu; |
6 | 6 |
7 import android.test.ActivityInstrumentationTestCase2; | 7 import android.test.ActivityInstrumentationTestCase2; |
8 import android.text.TextUtils; | 8 import android.text.TextUtils; |
9 import android.view.ContextMenu; | 9 import android.view.ContextMenu; |
10 import android.view.MenuItem; | 10 import android.view.MenuItem; |
11 | 11 |
12 import junit.framework.Assert; | 12 import junit.framework.Assert; |
13 | 13 |
14 import org.chromium.chrome.browser.TabBase; | 14 import org.chromium.chrome.browser.Tab; |
15 import org.chromium.chrome.test.util.TabBaseTabUtils; | 15 import org.chromium.chrome.test.util.TabUtils; |
16 import org.chromium.chrome.test.util.TabBaseTabUtils.TestCallbackHelperContainer
ForTab; | 16 import org.chromium.chrome.test.util.TabUtils.TestCallbackHelperContainerForTab; |
17 import org.chromium.content.browser.test.util.Criteria; | 17 import org.chromium.content.browser.test.util.Criteria; |
18 import org.chromium.content.browser.test.util.CriteriaHelper; | 18 import org.chromium.content.browser.test.util.CriteriaHelper; |
19 import org.chromium.content.browser.test.util.DOMUtils; | 19 import org.chromium.content.browser.test.util.DOMUtils; |
20 | 20 |
21 import java.util.concurrent.TimeoutException; | 21 import java.util.concurrent.TimeoutException; |
22 | 22 |
23 /** | 23 /** |
24 * A utility class to help open and interact with context menus triggered by a W
ebContents. | 24 * A utility class to help open and interact with context menus triggered by a W
ebContents. |
25 */ | 25 */ |
26 public class ContextMenuUtils { | 26 public class ContextMenuUtils { |
27 /** | 27 /** |
28 * Opens a context menu. | 28 * Opens a context menu. |
29 * @param testCase The test harness. | 29 * @param testCase The test harness. |
30 * @param tab The tab to open a context menu for. | 30 * @param tab The tab to open a context menu for. |
31 * @param client The helper client for {@code tab} that can w
ait for events. If | 31 * @param client The helper client for {@code tab} that can w
ait for events. If |
32 * this is {@code null} one will be built autom
atically. | 32 * this is {@code null} one will be built autom
atically. |
33 * @param openerDOMNodeId The DOM node to long press to open the conte
xt menu for. | 33 * @param openerDOMNodeId The DOM node to long press to open the conte
xt menu for. |
34 * @return The {@link ContextMenu} that was opened. | 34 * @return The {@link ContextMenu} that was opened. |
35 * @throws InterruptedException | 35 * @throws InterruptedException |
36 * @throws TimeoutException | 36 * @throws TimeoutException |
37 */ | 37 */ |
38 public static ContextMenu openContextMenu(ActivityInstrumentationTestCase2 t
estCase, | 38 public static ContextMenu openContextMenu(ActivityInstrumentationTestCase2 t
estCase, |
39 TabBase tab, TestCallbackHelperContainerForTab client, String opener
DOMNodeId) | 39 Tab tab, TestCallbackHelperContainerForTab client, String openerDOMN
odeId) |
40 throws InterruptedException, TimeoutException { | 40 throws InterruptedException, TimeoutException { |
41 if (client == null) client = TabBaseTabUtils.getTestCallbackHelperContai
ner(tab); | 41 if (client == null) client = TabUtils.getTestCallbackHelperContainer(tab
); |
42 | 42 |
43 TestCallbackHelperContainerForTab.OnContextMenuShownHelper helper = | 43 TestCallbackHelperContainerForTab.OnContextMenuShownHelper helper = |
44 client.getOnContextMenuShownHelper(); | 44 client.getOnContextMenuShownHelper(); |
45 | 45 |
46 int callCount = helper.getCallCount(); | 46 int callCount = helper.getCallCount(); |
47 DOMUtils.longPressNode(testCase, tab.getContentView(), client, openerDOM
NodeId); | 47 DOMUtils.longPressNode(testCase, tab.getContentView(), client, openerDOM
NodeId); |
48 | 48 |
49 helper.waitForCallback(callCount); | 49 helper.waitForCallback(callCount); |
50 return helper.getContextMenu(); | 50 return helper.getContextMenu(); |
51 } | 51 } |
52 | 52 |
53 /** | 53 /** |
54 * Opens and selects an item from a context menu. | 54 * Opens and selects an item from a context menu. |
55 * @param testCase The test harness. | 55 * @param testCase The test harness. |
56 * @param tab The tab to open a context menu for. | 56 * @param tab The tab to open a context menu for. |
57 * @param client The helper client for {@code tab} that can w
ait for events. If | 57 * @param client The helper client for {@code tab} that can w
ait for events. If |
58 * this is {@code null} one will be built autom
atically. | 58 * this is {@code null} one will be built autom
atically. |
59 * @param openerDOMNodeId The DOM node to long press to open the conte
xt menu for. | 59 * @param openerDOMNodeId The DOM node to long press to open the conte
xt menu for. |
60 * @param itemId The context menu item ID to select. | 60 * @param itemId The context menu item ID to select. |
61 * @throws InterruptedException | 61 * @throws InterruptedException |
62 * @throws TimeoutException | 62 * @throws TimeoutException |
63 */ | 63 */ |
64 public static void selectContextMenuItem(ActivityInstrumentationTestCase2 te
stCase, | 64 public static void selectContextMenuItem(ActivityInstrumentationTestCase2 te
stCase, |
65 TabBase tab, TestCallbackHelperContainerForTab client, String opener
DOMNodeId, | 65 Tab tab, TestCallbackHelperContainerForTab client, String openerDOMN
odeId, |
66 final int itemId) throws InterruptedException, TimeoutException { | 66 final int itemId) throws InterruptedException, TimeoutException { |
67 ContextMenu menu = openContextMenu(testCase, tab, client, openerDOMNodeI
d); | 67 ContextMenu menu = openContextMenu(testCase, tab, client, openerDOMNodeI
d); |
68 Assert.assertNotNull("Failed to open context menu", menu); | 68 Assert.assertNotNull("Failed to open context menu", menu); |
69 | 69 |
70 selectOpenContextMenuItem(testCase, menu, itemId); | 70 selectOpenContextMenuItem(testCase, menu, itemId); |
71 } | 71 } |
72 | 72 |
73 /** | 73 /** |
74 * Opens and selects an item from a context menu. | 74 * Opens and selects an item from a context menu. |
75 * @param testCase The test harness. | 75 * @param testCase The test harness. |
76 * @param tab The tab to open a context menu for. | 76 * @param tab The tab to open a context menu for. |
77 * @param client The helper client for {@code tab} that can w
ait for events. If | 77 * @param client The helper client for {@code tab} that can w
ait for events. If |
78 * this is {@code null} one will be built autom
atically. | 78 * this is {@code null} one will be built autom
atically. |
79 * @param openerDOMNodeId The DOM node to long press to open the conte
xt menu for. | 79 * @param openerDOMNodeId The DOM node to long press to open the conte
xt menu for. |
80 * @param itemTitle The title of the context menu item to select
. | 80 * @param itemTitle The title of the context menu item to select
. |
81 * @throws InterruptedException | 81 * @throws InterruptedException |
82 * @throws TimeoutException | 82 * @throws TimeoutException |
83 */ | 83 */ |
84 public static void selectContextMenuItemByTitle(ActivityInstrumentationTestC
ase2 testCase, | 84 public static void selectContextMenuItemByTitle(ActivityInstrumentationTestC
ase2 testCase, |
85 TabBase tab, TestCallbackHelperContainerForTab client, String opener
DOMNodeId, | 85 Tab tab, TestCallbackHelperContainerForTab client, String openerDOMN
odeId, |
86 String itemTitle) throws InterruptedException, TimeoutException { | 86 String itemTitle) throws InterruptedException, TimeoutException { |
87 | 87 |
88 ContextMenu menu = openContextMenu(testCase, tab, client, openerDOMNodeI
d); | 88 ContextMenu menu = openContextMenu(testCase, tab, client, openerDOMNodeI
d); |
89 Assert.assertNotNull("Failed to open context menu", menu); | 89 Assert.assertNotNull("Failed to open context menu", menu); |
90 | 90 |
91 Integer itemId = null; | 91 Integer itemId = null; |
92 for (int i = 0; i < menu.size(); i++) { | 92 for (int i = 0; i < menu.size(); i++) { |
93 MenuItem item = menu.getItem(i); | 93 MenuItem item = menu.getItem(i); |
94 if (TextUtils.equals(item.getTitle(), itemTitle)) { | 94 if (TextUtils.equals(item.getTitle(), itemTitle)) { |
95 itemId = item.getItemId(); | 95 itemId = item.getItemId(); |
(...skipping 22 matching lines...) Expand all Loading... |
118 | 118 |
119 Assert.assertTrue("Activity did not regain focus.", | 119 Assert.assertTrue("Activity did not regain focus.", |
120 CriteriaHelper.pollForCriteria(new Criteria() { | 120 CriteriaHelper.pollForCriteria(new Criteria() { |
121 @Override | 121 @Override |
122 public boolean isSatisfied() { | 122 public boolean isSatisfied() { |
123 return testCase.getActivity().hasWindowFocus(); | 123 return testCase.getActivity().hasWindowFocus(); |
124 } | 124 } |
125 })); | 125 })); |
126 } | 126 } |
127 } | 127 } |
OLD | NEW |