Commit daa19a78 authored by sandromaggi's avatar sandromaggi Committed by Commit Bot

[Autofill Assistant] Add integration tests for AA in Chrome Tab.

This CL includes a fix for an Assertion that was being triggered when
the same |isObscuringAllTabs| value was set again.

Bug: b/152967053
Change-Id: Ib0e7ea37100d216e6646d904519f3e5d369d73ec
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2132192
Commit-Queue: Sandro Maggi <sandromaggi@google.com>
Reviewed-by: default avatarMathias Carlen <mcarlen@chromium.org>
Reviewed-by: default avatarClemens Arbesser <arbesser@google.com>
Cr-Commit-Position: refs/heads/master@{#755802}
parent c238a07c
......@@ -235,6 +235,7 @@ android_library("test_java") {
"javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantActionsCarouselUiTest.java",
"javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantAutostartTest.java",
"javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantBottomsheetTest.java",
"javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantChromeTabIntegrationTest.java",
"javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantCollectUserDataIntegrationTest.java",
"javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantCollectUserDataTestHelper.java",
"javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantCollectUserDataUiTest.java",
......
......@@ -191,8 +191,12 @@ class AssistantBottomBarCoordinator implements AssistantPeekHeightCoordinator.De
hide();
}
} else if (AssistantModel.ALLOW_TALKBACK_ON_WEBSITE == propertyKey) {
controller.setIsObscuringAllTabs(
tabObscuringHandler, !model.get(AssistantModel.ALLOW_TALKBACK_ON_WEBSITE));
// Calling |setIsObscuringAllTabs| with the state it's already in triggers an
// assertion in |BottomSheetController|.
boolean shouldBeObscuring = !model.get(AssistantModel.ALLOW_TALKBACK_ON_WEBSITE);
if (shouldBeObscuring != tabObscuringHandler.areAllTabsObscured()) {
controller.setIsObscuringAllTabs(tabObscuringHandler, shouldBeObscuring);
}
} else if (AssistantModel.WEB_CONTENTS == propertyKey) {
mWebContents = model.get(AssistantModel.WEB_CONTENTS);
}
......
// Copyright 2020 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_assistant;
import static android.support.test.espresso.assertion.ViewAssertions.doesNotExist;
import static android.support.test.espresso.matcher.ViewMatchers.isCompletelyDisplayed;
import static android.support.test.espresso.matcher.ViewMatchers.withText;
import static org.chromium.chrome.browser.autofill_assistant.AutofillAssistantUiTestUtil.startAutofillAssistant;
import static org.chromium.chrome.browser.autofill_assistant.AutofillAssistantUiTestUtil.waitUntilViewAssertionTrue;
import static org.chromium.chrome.browser.autofill_assistant.AutofillAssistantUiTestUtil.waitUntilViewMatchesCondition;
import android.support.test.InstrumentationRegistry;
import android.support.test.filters.MediumTest;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.chromium.base.test.util.CommandLineFlags;
import org.chromium.chrome.browser.autofill_assistant.proto.ActionProto;
import org.chromium.chrome.browser.autofill_assistant.proto.ChipProto;
import org.chromium.chrome.browser.autofill_assistant.proto.PromptProto;
import org.chromium.chrome.browser.autofill_assistant.proto.SupportedScriptProto;
import org.chromium.chrome.browser.autofill_assistant.proto.SupportedScriptProto.PresentationProto;
import org.chromium.chrome.browser.flags.ChromeSwitches;
import org.chromium.chrome.browser.tabmodel.TabModelUtils;
import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
import org.chromium.chrome.test.util.ChromeTabUtils;
import org.chromium.net.test.EmbeddedTestServer;
import java.util.ArrayList;
import java.util.Collections;
/**
* Tests autofill assistant in a normal Chrome tab.
*/
@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE})
@RunWith(ChromeJUnit4ClassRunner.class)
public class AutofillAssistantChromeTabIntegrationTest {
@Rule
public ChromeTabbedActivityTestRule mTestRule = new ChromeTabbedActivityTestRule();
private static final String TEST_PAGE = "/components/test/data/autofill_assistant/html/"
+ "autofill_assistant_target_website.html";
private static final String NEW_TAB_PAGE = "/components/test/data/autofill_assistant/html/"
+ "form_target_website.html";
private EmbeddedTestServer mTestServer;
private void runScript(AutofillAssistantTestScript script) {
AutofillAssistantTestService testService =
new AutofillAssistantTestService(Collections.singletonList(script));
startAutofillAssistant(mTestRule.getActivity(), testService);
}
@Before
public void setUp() throws Exception {
AutofillAssistantPreferencesUtil.setInitialPreferences(true);
mTestServer = EmbeddedTestServer.createAndStartServer(InstrumentationRegistry.getContext());
mTestRule.startMainActivityWithURL(mTestServer.getURL(TEST_PAGE));
}
@After
public void tearDown() throws Exception {
mTestServer.stopAndDestroyServer();
}
@Test
@MediumTest
public void switchingTabHidesAutofillAssistant() throws Exception {
ArrayList<ActionProto> list = new ArrayList<>();
list.add((ActionProto) ActionProto.newBuilder()
.setPrompt(PromptProto.newBuilder().setMessage("Prompt").addChoices(
PromptProto.Choice.newBuilder()))
.build());
AutofillAssistantTestScript script = new AutofillAssistantTestScript(
(SupportedScriptProto) SupportedScriptProto.newBuilder()
.setPath("autofill_assistant_target_website.html")
.setPresentation(PresentationProto.newBuilder().setAutostart(true).setChip(
ChipProto.newBuilder().setText("Done")))
.build(),
list);
runScript(script);
int initialTabId =
TabModelUtils.getCurrentTabId(mTestRule.getActivity().getCurrentTabModel());
waitUntilViewMatchesCondition(withText("Prompt"), isCompletelyDisplayed());
ChromeTabUtils.fullyLoadUrlInNewTab(InstrumentationRegistry.getInstrumentation(),
mTestRule.getActivity(), mTestServer.getURL(NEW_TAB_PAGE), false);
waitUntilViewAssertionTrue(withText("Prompt"), doesNotExist(), 3000L);
ChromeTabUtils.switchTabInCurrentTabModel(mTestRule.getActivity(),
TabModelUtils.getTabIndexById(
mTestRule.getActivity().getCurrentTabModel(), initialTabId));
waitUntilViewMatchesCondition(withText("Prompt"), isCompletelyDisplayed());
}
@Test
@MediumTest
public void closingTabResurfacesAutofillAssistant() throws Exception {
ArrayList<ActionProto> list = new ArrayList<>();
list.add((ActionProto) ActionProto.newBuilder()
.setPrompt(PromptProto.newBuilder().setMessage("Prompt").addChoices(
PromptProto.Choice.newBuilder()))
.build());
AutofillAssistantTestScript script = new AutofillAssistantTestScript(
(SupportedScriptProto) SupportedScriptProto.newBuilder()
.setPath("autofill_assistant_target_website.html")
.setPresentation(PresentationProto.newBuilder().setAutostart(true).setChip(
ChipProto.newBuilder().setText("Done")))
.build(),
list);
runScript(script);
waitUntilViewMatchesCondition(withText("Prompt"), isCompletelyDisplayed());
ChromeTabUtils.fullyLoadUrlInNewTab(InstrumentationRegistry.getInstrumentation(),
mTestRule.getActivity(), mTestServer.getURL(NEW_TAB_PAGE), false);
waitUntilViewAssertionTrue(withText("Prompt"), doesNotExist(), 3000L);
ChromeTabUtils.closeCurrentTab(
InstrumentationRegistry.getInstrumentation(), mTestRule.getActivity());
waitUntilViewMatchesCondition(withText("Prompt"), isCompletelyDisplayed());
}
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment