ContextMenuTest.java revision a1401311d1ab56c4ed0a474bd38c108f75cb0cd9
1a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 2a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// found in the LICENSE file. 4a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 5a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)package org.chromium.chrome.browser.contextmenu; 6a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 7a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)import android.content.ClipData; 8a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)import android.content.ClipboardManager; 9a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)import android.content.Context; 10a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)import android.os.Build; 11a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)import android.test.FlakyTest; 12a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)import android.view.ContextMenu; 13a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 14a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)import junit.framework.Assert; 15a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 16a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)import org.chromium.base.test.util.Feature; 17a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)import org.chromium.chrome.R; 18a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)import org.chromium.chrome.browser.Tab; 19a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)import org.chromium.chrome.shell.ChromeShellTestBase; 20a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)import org.chromium.chrome.test.util.TabUtils; 21a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)import org.chromium.chrome.test.util.TabUtils.TestCallbackHelperContainerForTab; 22a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)import org.chromium.chrome.test.util.TestHttpServerClient; 23a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)import org.chromium.chrome.test.util.browser.contextmenu.ContextMenuUtils; 24a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)import org.chromium.content.browser.test.util.Criteria; 25a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)import org.chromium.content.browser.test.util.CriteriaHelper; 26a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)import org.chromium.content.browser.test.util.KeyUtils; 27a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)import org.chromium.content.browser.test.util.TestCallbackHelperContainer.OnPageFinishedHelper; 28a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)import org.chromium.content.browser.test.util.TestTouchUtils; 29a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 30a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)import java.util.concurrent.TimeoutException; 31a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)import java.util.concurrent.atomic.AtomicReference; 32a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 33a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)public class ContextMenuTest extends ChromeShellTestBase { 34a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) @Override 35a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) public void setUp() throws Exception { 36a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) super.setUp(); 37a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) launchChromeShellWithUrl(TestHttpServerClient.getUrl( 38a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) "chrome/test/data/android/contextmenu/context_menu_test.html")); 39a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) assertTrue("Page failed to load", waitForActiveShellToBeDoneLoading()); 40a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) assertWaitForPageScaleFactorMatch(0.5f); 41a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 42a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 43a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // http://crbug.com/326769 44a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) @FlakyTest 45a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // @LargeTest 46a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) @Feature({"Browser", "Main"}) 47a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) public void testCopyLinkURL() throws InterruptedException, TimeoutException { 48a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) Tab tab = getActivity().getActiveTab(); 49a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) ContextMenuUtils.selectContextMenuItem(this, tab, 50a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) TabUtils.getTestCallbackHelperContainer(tab), "testLink", 51a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) R.id.contextmenu_copy_link_address_text); 52a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 53a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) assertStringContains("test_link.html", getClipboardText()); 54a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 55a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 56a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // http://crbug.com/326769 57a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) @FlakyTest 58a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // @LargeTest 59a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) @Feature({"Browser"}) 60a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) public void testCopyImageLinkCopiesLinkURL() throws InterruptedException, TimeoutException { 61a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) Tab tab = getActivity().getActiveTab(); 62a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) ContextMenuUtils.selectContextMenuItem(this, tab, 63a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) TabUtils.getTestCallbackHelperContainer(tab), "testImageLink", 64a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) R.id.contextmenu_copy_link_address_text); 65a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 66a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) assertStringContains("test_link.html", getClipboardText()); 67a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 68a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 69a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // http://crbug.com/326769 70a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) @FlakyTest 71a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // @LargeTest 72a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) @Feature({"Browser"}) 73a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) public void testCopyLinkTextSimple() throws InterruptedException, TimeoutException { 74a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) Tab tab = getActivity().getActiveTab(); 75a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) ContextMenuUtils.selectContextMenuItem(this, tab, 76a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) TabUtils.getTestCallbackHelperContainer(tab), "testLink", 77a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) R.id.contextmenu_copy_link_text); 78a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 79a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) assertEquals("Clipboard text was not what was expected", "Test Link", 80a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) getClipboardText()); 81a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 82a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 83a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // http://crbug.com/326769 84a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) @FlakyTest 85a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // @LargeTest 86a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) @Feature({"Browser"}) 87a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) public void testCopyLinkTextComplex() throws InterruptedException, TimeoutException { 88a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) Tab tab = getActivity().getActiveTab(); 89a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) ContextMenuUtils.selectContextMenuItem(this, tab, 90a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) TabUtils.getTestCallbackHelperContainer(tab), "copyLinkTextComplex", 91a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) R.id.contextmenu_copy_link_text); 92a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 93a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) assertEquals("Clipboard text was not what was expected", 94a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) "This is pretty extreme \n(newline). ", getClipboardText()); 95a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 96a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 97a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // http://crbug.com/326769 98a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) @FlakyTest 99a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // @LargeTest 100a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) @Feature({"Browser"}) 101a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) public void testCopyImageToClipboard() throws InterruptedException, TimeoutException { 102a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) return; 103a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 104a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) Tab tab = getActivity().getActiveTab(); 105a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) ContextMenuUtils.selectContextMenuItem(this, tab, 106a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) TabUtils.getTestCallbackHelperContainer(tab), "testImage", 107a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) R.id.contextmenu_copy_image); 108a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 109a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) String expectedUrl = TestHttpServerClient.getUrl( 110a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) "chrome/test/data/android/contextmenu/test_image.png"); 111a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 112a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) assertEquals("Clipboard text is not correct", expectedUrl, getClipboardText()); 113a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 114a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 115a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // http://crbug.com/326769 116a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) @FlakyTest 117a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // @LargeTest 118a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) @Feature({"Browser"}) 119a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) public void testLongPressOnImage() throws InterruptedException, TimeoutException { 120a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) final Tab tab = getActivity().getActiveTab(); 121a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 122a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) TestCallbackHelperContainerForTab helper = 123a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) TabUtils.getTestCallbackHelperContainer(tab); 124a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 125a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) OnPageFinishedHelper callback = helper.getOnPageFinishedHelper(); 126a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) int callbackCount = callback.getCallCount(); 127a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 128a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) ContextMenuUtils.selectContextMenuItem(this, tab, helper, "testImage", 129a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) R.id.contextmenu_open_image); 130a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 131a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) callback.waitForCallback(callbackCount); 132a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 133a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) String expectedUrl = TestHttpServerClient.getUrl( 134a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) "chrome/test/data/android/contextmenu/test_image.png"); 135a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 136a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) final AtomicReference<String> actualUrl = new AtomicReference<String>(); 137a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) getInstrumentation().runOnMainSync(new Runnable() { 138a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) @Override 139a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) public void run() { 140a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) actualUrl.set(tab.getUrl()); 141a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 142a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) }); 143a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 144a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) assertEquals("Failed to navigate to the image", expectedUrl, actualUrl.get()); 145a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 146a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 147a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // http://crbug.com/326769 148a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) @FlakyTest 149a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // @LargeTest 150a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) @Feature({"Browser"}) 151a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) public void testLongPressOnImageLink() throws InterruptedException, TimeoutException { 152a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) final Tab tab = getActivity().getActiveTab(); 153a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 154a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) TestCallbackHelperContainerForTab helper = 155a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) TabUtils.getTestCallbackHelperContainer(tab); 156a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 157a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) OnPageFinishedHelper callback = helper.getOnPageFinishedHelper(); 158a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) int callbackCount = callback.getCallCount(); 159a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 160a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) ContextMenuUtils.selectContextMenuItem(this, tab, helper, "testImage", 161a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) R.id.contextmenu_open_image); 162a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 163a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) callback.waitForCallback(callbackCount); 164a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 165a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) final AtomicReference<String> actualTitle = new AtomicReference<String>(); 166a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) getInstrumentation().runOnMainSync(new Runnable() { 167a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) @Override 168a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) public void run() { 169a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) actualTitle.set(tab.getTitle()); 170a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 171a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) }); 172a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 173a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) assertTrue("Navigated to the wrong page.", actualTitle.get().startsWith("test_image.png")); 174a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 175a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 176a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // http://crbug.com/326769 177a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) @FlakyTest 178a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // @LargeTest 179a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) @Feature({"Browser"}) 180a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) public void testDismissContextMenuOnBack() throws InterruptedException, TimeoutException { 181a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) Tab tab = getActivity().getActiveTab(); 182a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) ContextMenu menu = ContextMenuUtils.openContextMenu(this, tab, 183a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) TabUtils.getTestCallbackHelperContainer(tab), "testImage"); 184a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) assertNotNull("Context menu was not properly created", menu); 185a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) assertFalse("Context menu did not have window focus", getActivity().hasWindowFocus()); 186a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 187a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) KeyUtils.pressBack(getInstrumentation()); 188a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 189a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) Assert.assertTrue("Activity did not regain focus.", 190a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) CriteriaHelper.pollForCriteria(new Criteria() { 191a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) @Override 192a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) public boolean isSatisfied() { 193a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) return getActivity().hasWindowFocus(); 194a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 195a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) })); 196a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 197a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 198a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // http://crbug.com/326769 199a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) @FlakyTest 200a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // @LargeTest 201a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) @Feature({"Browser"}) 202a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) public void testDismissContextMenuOnClick() throws InterruptedException, TimeoutException { 203a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) Tab tab = getActivity().getActiveTab(); 204a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) ContextMenu menu = ContextMenuUtils.openContextMenu(this, tab, 205a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) TabUtils.getTestCallbackHelperContainer(tab), "testImage"); 206a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) assertNotNull("Context menu was not properly created", menu); 207a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) assertFalse("Context menu did not have window focus", getActivity().hasWindowFocus()); 208a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 209a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) TestTouchUtils.singleClickView(getInstrumentation(), tab.getPageInfo().getView(), 0, 0); 210a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 211a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) Assert.assertTrue("Activity did not regain focus.", 212a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) CriteriaHelper.pollForCriteria(new Criteria() { 213a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) @Override 214a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) public boolean isSatisfied() { 215a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) return getActivity().hasWindowFocus(); 216a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 217a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) })); 218a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 219a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 220a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) private String getClipboardText() { 221a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) ClipboardManager clipMgr = 222a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) (ClipboardManager) getActivity().getSystemService(Context.CLIPBOARD_SERVICE); 223a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) ClipData clipData = clipMgr.getPrimaryClip(); 224a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) assertNotNull("Primary clip is null", clipData); 225a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) assertTrue("Primary clip contains no items.", clipData.getItemCount() > 0); 226a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) return clipData.getItemAt(0).getText().toString(); 227a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 228a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 229a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) private void assertStringContains(String subString, String superString) { 230a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) assertTrue("String '" + superString + "' does not contain '" + subString + "'", 231a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) superString.contains(subString)); 232a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 233a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)} 234