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

Unified Diff: chrome/android/javatests/src/org/chromium/chrome/browser/autofill/AutofillPopupTest.java

Issue 1139643006: Rename chrome/android/javatests to javatests_shell. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 5 years, 7 months 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/autofill/AutofillPopupTest.java
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/AutofillPopupTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/AutofillPopupTest.java
deleted file mode 100644
index 4b1802481419de5c700af551bc451b6efcbbc6e1..0000000000000000000000000000000000000000
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/AutofillPopupTest.java
+++ /dev/null
@@ -1,354 +0,0 @@
-// 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.autofill;
-
-import android.test.suitebuilder.annotation.MediumTest;
-import android.text.TextUtils;
-import android.view.View;
-import android.view.ViewGroup;
-
-import org.chromium.base.ThreadUtils;
-import org.chromium.base.test.util.Feature;
-import org.chromium.base.test.util.UrlUtils;
-import org.chromium.chrome.R;
-import org.chromium.chrome.browser.autofill.PersonalDataManager.AutofillProfile;
-import org.chromium.chrome.shell.ChromeShellTestBase;
-import org.chromium.content.browser.ContentViewCore;
-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 org.chromium.content.browser.test.util.TestInputMethodManagerWrapper;
-import org.chromium.content.browser.test.util.TouchCommon;
-import org.chromium.content_public.browser.WebContents;
-import org.chromium.ui.autofill.AutofillPopup;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.TimeoutException;
-
-/**
- * Integration tests for the AutofillPopup.
- */
-public class AutofillPopupTest extends ChromeShellTestBase {
-
- private static final String FIRST_NAME = "John";
- private static final String LAST_NAME = "Smith";
- private static final String COMPANY_NAME = "Acme Inc.";
- private static final String ADDRESS_LINE1 = "1 Main";
- private static final String ADDRESS_LINE2 = "Apt A";
- private static final String STREET_ADDRESS_TEXTAREA = ADDRESS_LINE1 + "\n" + ADDRESS_LINE2;
- private static final String CITY = "San Francisco";
- private static final String DEPENDENT_LOCALITY = "";
- private static final String STATE = "CA";
- private static final String ZIP_CODE = "94102";
- private static final String SORTING_CODE = "";
- private static final String COUNTRY = "US";
- private static final String PHONE_NUMBER = "4158889999";
- private static final String EMAIL = "john@acme.inc";
- private static final String LANGUAGE_CODE = "";
- private static final String ORIGIN = "https://www.example.com";
-
- private static final String BASIC_PAGE_DATA = UrlUtils.encodeHtmlDataUri("<html><head>"
- + "<meta name=\"viewport\""
- + "content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0\" /></head>"
- + "<body><form method=\"POST\">"
- + "<input type=\"text\" id=\"fn\" autocomplete=\"given-name\" /><br>"
- + "<input type=\"text\" id=\"ln\" autocomplete=\"family-name\" /><br>"
- + "<textarea id=\"sa\" autocomplete=\"street-address\"></textarea><br>"
- + "<input type=\"text\" id=\"a1\" autocomplete=\"address-line1\" /><br>"
- + "<input type=\"text\" id=\"a2\" autocomplete=\"address-line2\" /><br>"
- + "<input type=\"text\" id=\"ct\" autocomplete=\"locality\" /><br>"
- + "<input type=\"text\" id=\"zc\" autocomplete=\"postal-code\" /><br>"
- + "<input type=\"text\" id=\"em\" autocomplete=\"email\" /><br>"
- + "<input type=\"text\" id=\"ph\" autocomplete=\"tel\" /><br>"
- + "<input type=\"text\" id=\"fx\" autocomplete=\"fax\" /><br>"
- + "<select id=\"co\" autocomplete=\"country\"><br>"
- + "<option value=\"BR\">Brazil</option>"
- + "<option value=\"US\">United States</option>"
- + "</select>"
- + "<input type=\"submit\" />"
- + "</form></body></html>");
-
- private static final String INITIATING_ELEMENT_FILLED = UrlUtils.encodeHtmlDataUri("<html>"
- + "<head><meta name=\"viewport\""
- + "content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0\" /></head>"
- + "<body><form method=\"POST\">"
- + "<input type=\"text\" id=\"fn\" autocomplete=\"given-name\" value=\"J\"><br>"
- + "<input type=\"text\" id=\"ln\" autocomplete=\"family-name\"><br>"
- + "<input type=\"text\" id=\"em\" autocomplete=\"email\"><br>"
- + "<select id=\"co\" autocomplete=\"country\"><br>"
- + "<option value=\"US\">United States</option>"
- + "<option value=\"BR\">Brazil</option>"
- + "</select>"
- + "<input type=\"submit\" />"
- + "</form></body></html>");
-
- private static final String ANOTHER_ELEMENT_FILLED = UrlUtils.encodeHtmlDataUri("<html><head>"
- + "<meta name=\"viewport\""
- + "content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0\" /></head>"
- + "<body><form method=\"POST\">"
- + "<input type=\"text\" id=\"fn\" autocomplete=\"given-name\"><br>"
- + "<input type=\"text\" id=\"ln\" autocomplete=\"family-name\"><br>"
- + "<input type=\"text\" id=\"em\" autocomplete=\"email\" value=\"foo@example.com\"><br>"
- + "<select id=\"co\" autocomplete=\"country\"><br>"
- + "<option></option>"
- + "<option value=\"BR\">Brazil</option>"
- + "<option value=\"US\">United States</option>"
- + "</select>"
- + "<input type=\"submit\" />"
- + "</form></body></html>");
-
- private static final String INVALID_OPTION = UrlUtils.encodeHtmlDataUri("<html><head>"
- + "<meta name=\"viewport\""
- + "content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0\" /></head>"
- + "<body><form method=\"POST\">"
- + "<input type=\"text\" id=\"fn\" autocomplete=\"given-name\" value=\"J\"><br>"
- + "<input type=\"text\" id=\"ln\" autocomplete=\"family-name\"><br>"
- + "<input type=\"text\" id=\"em\" autocomplete=\"email\"><br>"
- + "<select id=\"co\" autocomplete=\"country\"><br>"
- + "<option value=\"GB\">Great Britain</option>"
- + "<option value=\"BR\">Brazil</option>"
- + "</select>"
- + "<input type=\"submit\" />"
- + "</form></body></html>");
-
- private AutofillTestHelper mHelper;
- private List<AutofillLogger.LogEntry> mAutofillLoggedEntries;
-
- @Override
- public void setUp() throws Exception {
- super.setUp();
- clearAppData();
- mAutofillLoggedEntries = new ArrayList<AutofillLogger.LogEntry>();
- AutofillLogger.setLogger(
- new AutofillLogger.Logger() {
- @Override
- public void didFillField(AutofillLogger.LogEntry logEntry) {
- mAutofillLoggedEntries.add(logEntry);
- }
- }
- );
- }
-
- private void loadAndFillForm(
- final String formDataUrl, final String inputText)
- throws InterruptedException, ExecutionException, TimeoutException {
- launchChromeShellWithUrl(formDataUrl);
- assertTrue(waitForActiveShellToBeDoneLoading());
- mHelper = new AutofillTestHelper();
-
- // The TestInputMethodManagerWrapper intercepts showSoftInput so that a keyboard is never
- // brought up.
- final ContentViewCore viewCore = getActivity().getActiveContentViewCore();
- final WebContents webContents = viewCore.getWebContents();
- final ViewGroup view = viewCore.getContainerView();
- final TestInputMethodManagerWrapper immw =
- new TestInputMethodManagerWrapper(viewCore);
- viewCore.getImeAdapterForTest().setInputMethodManagerWrapper(immw);
-
- // Add an Autofill profile.
- AutofillProfile profile = new AutofillProfile(
- "" /* guid */, ORIGIN, FIRST_NAME + " " + LAST_NAME, COMPANY_NAME,
- STREET_ADDRESS_TEXTAREA,
- STATE, CITY, DEPENDENT_LOCALITY,
- ZIP_CODE, SORTING_CODE, COUNTRY, PHONE_NUMBER, EMAIL,
- LANGUAGE_CODE);
- mHelper.setProfile(profile);
- assertEquals(1, mHelper.getNumberOfProfiles());
-
- // Click the input field for the first name.
- assertTrue(DOMUtils.waitForNonZeroNodeBounds(webContents, "fn"));
- DOMUtils.clickNode(this, viewCore, "fn");
-
- waitForKeyboardShowRequest(immw, 1);
-
- ThreadUtils.runOnUiThreadBlocking(new Runnable() {
- @Override
- public void run() {
- viewCore.getInputConnectionForTest().setComposingText(
- inputText, 1);
- }
- });
-
- waitForAnchorViewAdd(view);
- View anchorView = view.findViewById(R.id.dropdown_popup_window);
-
- assertTrue(anchorView.getTag() instanceof AutofillPopup);
- final AutofillPopup popup = (AutofillPopup) anchorView.getTag();
-
- waitForAutofillPopopShow(popup);
-
- TouchCommon.singleClickViewRelative(popup.getListView(), 10, 10);
-
- waitForInputFieldFill(webContents);
- }
-
- /**
- * Tests that bringing up an Autofill and clicking on the first entry fills out the expected
- * Autofill information.
- */
- @MediumTest
- @Feature({"autofill"})
- public void testClickAutofillPopupSuggestion()
- throws InterruptedException, ExecutionException, TimeoutException {
- loadAndFillForm(BASIC_PAGE_DATA, "J");
- final ContentViewCore viewCore = getActivity().getActiveContentViewCore();
- final WebContents webContents = viewCore.getWebContents();
-
- assertEquals("First name did not match",
- FIRST_NAME, DOMUtils.getNodeValue(webContents, "fn"));
- assertEquals("Last name did not match",
- LAST_NAME, DOMUtils.getNodeValue(webContents, "ln"));
- assertEquals("Street address (textarea) did not match",
- STREET_ADDRESS_TEXTAREA, DOMUtils.getNodeValue(webContents, "sa"));
- assertEquals("Address line 1 did not match",
- ADDRESS_LINE1, DOMUtils.getNodeValue(webContents, "a1"));
- assertEquals("Address line 2 did not match",
- ADDRESS_LINE2, DOMUtils.getNodeValue(webContents, "a2"));
- assertEquals("City did not match",
- CITY, DOMUtils.getNodeValue(webContents, "ct"));
- assertEquals("Zip code did not match",
- ZIP_CODE, DOMUtils.getNodeValue(webContents, "zc"));
- assertEquals("Country did not match",
- COUNTRY, DOMUtils.getNodeValue(webContents, "co"));
- assertEquals("Email did not match",
- EMAIL, DOMUtils.getNodeValue(webContents, "em"));
- assertEquals("Phone number did not match",
- PHONE_NUMBER, DOMUtils.getNodeValue(webContents, "ph"));
-
- final String profileFullName = FIRST_NAME + " " + LAST_NAME;
- final int loggedEntries = 10;
- assertEquals("Mismatched number of logged entries",
- loggedEntries, mAutofillLoggedEntries.size());
- assertLogged(FIRST_NAME, profileFullName);
- assertLogged(LAST_NAME, profileFullName);
- assertLogged(STREET_ADDRESS_TEXTAREA, profileFullName);
- assertLogged(ADDRESS_LINE1, profileFullName);
- assertLogged(ADDRESS_LINE2, profileFullName);
- assertLogged(CITY, profileFullName);
- assertLogged(ZIP_CODE, profileFullName);
- assertLogged(COUNTRY, profileFullName);
- assertLogged(EMAIL, profileFullName);
- assertLogged(PHONE_NUMBER, profileFullName);
- }
-
- /**
- * Tests that bringing up an Autofill and clicking on the partially filled first
- * element will still fill the entire form (including the initiating element itself).
- */
- @MediumTest
- @Feature({"autofill"})
- public void testLoggingInitiatedElementFilled()
- throws InterruptedException, ExecutionException, TimeoutException {
- loadAndFillForm(INITIATING_ELEMENT_FILLED, "o");
- final String profileFullName = FIRST_NAME + " " + LAST_NAME;
- final int loggedEntries = 4;
- assertEquals("Mismatched number of logged entries",
- loggedEntries, mAutofillLoggedEntries.size());
- assertLogged(FIRST_NAME, profileFullName);
- assertLogged(LAST_NAME, profileFullName);
- assertLogged(EMAIL, profileFullName);
- assertLogged(COUNTRY, profileFullName);
- }
-
- /**
- * Tests that bringing up an Autofill and clicking on the empty first element
- * will fill the all other elements except the previously filled email.
- */
- @MediumTest
- @Feature({"autofill"})
- public void testLoggingAnotherElementFilled()
- throws InterruptedException, ExecutionException, TimeoutException {
- loadAndFillForm(ANOTHER_ELEMENT_FILLED, "J");
- final String profileFullName = FIRST_NAME + " " + LAST_NAME;
- final int loggedEntries = 3;
- assertEquals("Mismatched number of logged entries",
- loggedEntries, mAutofillLoggedEntries.size());
- assertLogged(FIRST_NAME, profileFullName);
- assertLogged(LAST_NAME, profileFullName);
- assertLogged(COUNTRY, profileFullName);
- // Email will not be logged since it already had some data.
- }
-
- /**
- * Tests that selecting a value not present in <option> will not be filled.
- */
- @MediumTest
- @Feature({"autofill"})
- public void testNotLoggingInvalidOption()
- throws InterruptedException, ExecutionException, TimeoutException {
- loadAndFillForm(INVALID_OPTION, "o");
- final String profileFullName = FIRST_NAME + " " + LAST_NAME;
- final int loggedEntries = 3;
- assertEquals("Mismatched number of logged entries",
- loggedEntries, mAutofillLoggedEntries.size());
- assertLogged(FIRST_NAME, profileFullName);
- assertLogged(LAST_NAME, profileFullName);
- assertLogged(EMAIL, profileFullName);
- // Country will not be logged since "US" is not a valid <option>.
- }
-
- // Wait and assert helper methods -------------------------------------------------------------
-
- private void waitForKeyboardShowRequest(final TestInputMethodManagerWrapper immw,
- final int count) throws InterruptedException {
- assertTrue("Keyboard was never requested to be shown.",
- CriteriaHelper.pollForCriteria(new Criteria() {
- @Override
- public boolean isSatisfied() {
- return immw.getShowSoftInputCounter() == count;
- }
- }));
- }
-
- private void waitForAnchorViewAdd(final ViewGroup view) throws InterruptedException {
- assertTrue("Autofill Popup anchor view was never added.",
- CriteriaHelper.pollForCriteria(new Criteria() {
- @Override
- public boolean isSatisfied() {
- return view.findViewById(R.id.dropdown_popup_window) != null;
- }
- }));
- }
-
- private void waitForAutofillPopopShow(final AutofillPopup popup) throws InterruptedException {
- assertTrue("Autofill Popup anchor view was never added.",
- CriteriaHelper.pollForCriteria(new Criteria() {
- @Override
- public boolean isSatisfied() {
- return popup.isShowing();
- }
- }));
- }
-
- private void waitForInputFieldFill(final WebContents webContents) throws InterruptedException {
- assertTrue("First name field was never filled.",
- CriteriaHelper.pollForCriteria(new Criteria() {
- @Override
- public boolean isSatisfied() {
- try {
- return TextUtils.equals(FIRST_NAME,
- DOMUtils.getNodeValue(webContents, "fn"));
- } catch (InterruptedException e) {
- return false;
- } catch (TimeoutException e) {
- return false;
- }
-
- }
- }));
- }
-
- private void assertLogged(String autofilledValue, String profileFullName) {
- for (AutofillLogger.LogEntry entry : mAutofillLoggedEntries) {
- if (entry.getAutofilledValue().equals(autofilledValue)
- && entry.getProfileFullName().equals(profileFullName)) {
- return;
- }
- }
- fail("Logged entry not found [" + autofilledValue + "," + profileFullName + "]");
- }
-}

Powered by Google App Engine
This is Rietveld 408576698