Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 package org.chromium.chrome.browser.autofill; | |
| 6 | |
| 7 import android.test.suitebuilder.annotation.MediumTest; | |
| 8 import android.view.View; | |
| 9 import android.view.ViewGroup; | |
| 10 | |
| 11 import org.chromium.base.test.util.Feature; | |
| 12 import org.chromium.base.test.util.UrlUtils; | |
| 13 import org.chromium.chrome.R; | |
| 14 import org.chromium.chrome.browser.autofill.PersonalDataManager.AutofillProfile; | |
| 15 import org.chromium.chrome.shell.ChromeShellTestBase; | |
| 16 import org.chromium.content.browser.ContentViewCore; | |
| 17 import org.chromium.content.browser.test.util.Criteria; | |
| 18 import org.chromium.content.browser.test.util.CriteriaHelper; | |
| 19 import org.chromium.content.browser.test.util.DOMUtils; | |
| 20 import org.chromium.content_public.browser.WebContents; | |
| 21 import org.chromium.ui.UiUtils; | |
| 22 import org.chromium.ui.autofill.AutofillPopup; | |
| 23 | |
| 24 import java.util.concurrent.ExecutionException; | |
| 25 import java.util.concurrent.TimeoutException; | |
| 26 | |
| 27 /** | |
| 28 * Integration tests for interaction of the AutofillPopup and a keyboard. | |
| 29 */ | |
| 30 public class AutofillPopupWithKeyboardTest extends ChromeShellTestBase { | |
| 31 /** | |
| 32 * Test that showing autofill popup and keyboard will not hide the autofill popup. | |
| 33 */ | |
| 34 @MediumTest | |
| 35 @Feature({"autofill-keyboard"}) | |
| 36 public void testShowAutofillPopupAndKeyboardimultaneously() | |
| 37 throws InterruptedException, ExecutionException, TimeoutException { | |
| 38 launchChromeShellWithUrl(UrlUtils.encodeHtmlDataUri("<html><head>" | |
| 39 + "<meta name=\"viewport\"" | |
| 40 + "content=\"width=device-width, initial-scale=1.0, maximum-scal e=1.0\" /></head>" | |
| 41 + "<body><form method=\"POST\">" | |
| 42 + "<input type=\"text\" id=\"fn\" autocomplete=\"given-name\" /> <br>" | |
| 43 + "<input type=\"text\" id=\"ln\" autocomplete=\"family-name\" / ><br>" | |
| 44 + "<textarea id=\"sa\" autocomplete=\"street-address\"></textare a><br>" | |
| 45 + "<input type=\"text\" id=\"a1\" autocomplete=\"address-line1\" /><br>" | |
| 46 + "<input type=\"text\" id=\"a2\" autocomplete=\"address-line2\" /><br>" | |
| 47 + "<input type=\"text\" id=\"ct\" autocomplete=\"locality\" /><b r>" | |
| 48 + "<input type=\"text\" id=\"zc\" autocomplete=\"postal-code\" / ><br>" | |
| 49 + "<input type=\"text\" id=\"em\" autocomplete=\"email\" /><br>" | |
| 50 + "<input type=\"text\" id=\"ph\" autocomplete=\"tel\" /><br>" | |
| 51 + "<input type=\"text\" id=\"fx\" autocomplete=\"fax\" /><br>" | |
| 52 + "<select id=\"co\" autocomplete=\"country\"><br>" | |
| 53 + "<option value=\"BR\">Brazil</option>" | |
| 54 + "<option value=\"US\">United States</option>" | |
| 55 + "</select>" | |
| 56 + "<input type=\"submit\" />" | |
| 57 + "</form></body></html>")); | |
| 58 assertTrue(waitForActiveShellToBeDoneLoading()); | |
| 59 | |
| 60 new AutofillTestHelper().setProfile(new AutofillProfile("", "https://www .example.com", | |
|
newt (away)
2015/01/15 17:36:45
These objects all live on the UI thread. You shoul
please use gerrit instead
2015/01/20 19:38:02
AutofillTestHelper.setProfile() handles threading
| |
| 61 "John Smith", "Acme Inc", "1 Main\nApt A", "CA", "San Francisco" , "", "94102", "", | |
| 62 "US", "(415) 888-9999", "john@acme.inc", "en")); | |
| 63 ContentViewCore viewCore = getActivity().getActiveContentViewCore(); | |
| 64 WebContents webContents = viewCore.getWebContents(); | |
| 65 assertTrue(DOMUtils.waitForNonZeroNodeBounds(webContents, "fn")); | |
| 66 | |
| 67 DOMUtils.clickNode(this, viewCore, "fn"); | |
| 68 waitForKeyboardShown(); | |
| 69 | |
| 70 final ViewGroup view = viewCore.getContainerView(); | |
| 71 UiUtils.hideKeyboard(view); | |
| 72 waitForKeyboardHidden(); | |
| 73 | |
| 74 DOMUtils.clickNode(this, viewCore, "fn"); | |
| 75 waitForKeyboardShown(); | |
| 76 | |
| 77 assertTrue("Autofill Popup anchor view was never added.", | |
| 78 CriteriaHelper.pollForCriteria(new Criteria() { | |
| 79 @Override | |
| 80 public boolean isSatisfied() { | |
|
newt (away)
2015/01/15 17:36:45
This should run on the UI thread, too. Also, lines
please use gerrit instead
2015/01/20 19:38:02
Done.
| |
| 81 return view.findViewById(R.id.dropdown_popup_window) != null; | |
| 82 } | |
| 83 })); | |
| 84 | |
| 85 View anchorView = view.findViewById(R.id.dropdown_popup_window); | |
| 86 assertTrue(anchorView.getTag() instanceof AutofillPopup); | |
| 87 | |
| 88 final AutofillPopup popup = (AutofillPopup) anchorView.getTag(); | |
| 89 assertTrue("Autofill Popup anchor view was never added.", | |
|
newt (away)
2015/01/15 17:36:45
this message doesn't seem quite right
please use gerrit instead
2015/01/20 19:38:02
Done.
| |
| 90 CriteriaHelper.pollForCriteria(new Criteria() { | |
| 91 @Override | |
| 92 public boolean isSatisfied() { | |
| 93 return popup.isShowing(); | |
| 94 } | |
| 95 })); | |
| 96 } | |
| 97 | |
| 98 private void waitForKeyboardShown() throws InterruptedException { | |
| 99 final ContentViewCore viewCore = getActivity().getActiveContentViewCore( ); | |
| 100 assertTrue("Keyboard was never shown", | |
| 101 CriteriaHelper.pollForCriteria(new Criteria() { | |
| 102 @Override | |
| 103 public boolean isSatisfied() { | |
| 104 return UiUtils.isKeyboardShowing(getActivity(), | |
| 105 viewCore.getContain erView()); | |
| 106 } | |
| 107 })); | |
| 108 viewCore.onSizeChanged(viewCore.getViewportWidthPix(), | |
|
newt (away)
2015/01/15 17:36:45
UI thread, etc. You get the point :)
please use gerrit instead
2015/01/20 19:38:03
Done.
| |
| 109 viewCore.getViewportHeightPix() - 100, viewCore.getViewportWidth Pix(), | |
| 110 viewCore.getViewportHeightPix()); | |
| 111 } | |
| 112 | |
| 113 private void waitForKeyboardHidden() throws InterruptedException { | |
| 114 final ContentViewCore viewCore = getActivity().getActiveContentViewCore( ); | |
| 115 assertTrue("Keyboard was never hidden", | |
| 116 CriteriaHelper.pollForCriteria(new Criteria() { | |
| 117 @Override | |
| 118 public boolean isSatisfied() { | |
| 119 return !UiUtils.isKeyboardShowing(getActivity(), | |
| 120 viewCore.getContai nerView()); | |
| 121 } | |
| 122 })); | |
| 123 viewCore.onSizeChanged(viewCore.getViewportWidthPix(), | |
| 124 viewCore.getViewportHeightPix() + 100, viewCore.getViewportWidth Pix(), | |
| 125 viewCore.getViewportHeightPix()); | |
| 126 } | |
| 127 } | |
| OLD | NEW |