Commit b600d648 authored by Rahul Goyal's avatar Rahul Goyal Committed by Chromium LUCI CQ

[Autofill Assistant] Extract base onboarding coordinator class.

The goal is to add a second implementation further downstream.
This CL is a refactoring only and should not have user-facing changes.

Bug: b/174445633
Change-Id: I9d0fc65daf53c968557a79dd6db0bdfc7c03bf46
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2573138Reviewed-by: default avatarClemens Arbesser <arbesser@google.com>
Reviewed-by: default avatarMathias Carlen <mcarlen@chromium.org>
Commit-Queue: Rahul Goyal <goyalrahul@google.com>
Cr-Commit-Position: refs/heads/master@{#838003}
parent 96155d9f
...@@ -96,7 +96,6 @@ android_library("java") { ...@@ -96,7 +96,6 @@ android_library("java") {
"java/src/org/chromium/chrome/browser/autofill_assistant/AssistantInfoPopup.java", "java/src/org/chromium/chrome/browser/autofill_assistant/AssistantInfoPopup.java",
"java/src/org/chromium/chrome/browser/autofill_assistant/AssistantKeyboardCoordinator.java", "java/src/org/chromium/chrome/browser/autofill_assistant/AssistantKeyboardCoordinator.java",
"java/src/org/chromium/chrome/browser/autofill_assistant/AssistantModel.java", "java/src/org/chromium/chrome/browser/autofill_assistant/AssistantModel.java",
"java/src/org/chromium/chrome/browser/autofill_assistant/AssistantOnboardingCoordinator.java",
"java/src/org/chromium/chrome/browser/autofill_assistant/AssistantPeekHeightCoordinator.java", "java/src/org/chromium/chrome/browser/autofill_assistant/AssistantPeekHeightCoordinator.java",
"java/src/org/chromium/chrome/browser/autofill_assistant/AssistantRootViewContainer.java", "java/src/org/chromium/chrome/browser/autofill_assistant/AssistantRootViewContainer.java",
"java/src/org/chromium/chrome/browser/autofill_assistant/AssistantSnackbar.java", "java/src/org/chromium/chrome/browser/autofill_assistant/AssistantSnackbar.java",
...@@ -110,6 +109,8 @@ android_library("java") { ...@@ -110,6 +109,8 @@ android_library("java") {
"java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantModuleEntryImpl.java", "java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantModuleEntryImpl.java",
"java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantServiceInjector.java", "java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantServiceInjector.java",
"java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantUiController.java", "java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantUiController.java",
"java/src/org/chromium/chrome/browser/autofill_assistant/BaseOnboardingCoordinator.java",
"java/src/org/chromium/chrome/browser/autofill_assistant/BottomSheetOnboardingCoordinator.java",
"java/src/org/chromium/chrome/browser/autofill_assistant/BottomSheetUtils.java", "java/src/org/chromium/chrome/browser/autofill_assistant/BottomSheetUtils.java",
"java/src/org/chromium/chrome/browser/autofill_assistant/FeedbackContext.java", "java/src/org/chromium/chrome/browser/autofill_assistant/FeedbackContext.java",
"java/src/org/chromium/chrome/browser/autofill_assistant/LayoutUtils.java", "java/src/org/chromium/chrome/browser/autofill_assistant/LayoutUtils.java",
...@@ -199,11 +200,11 @@ generate_jni("jni_headers") { ...@@ -199,11 +200,11 @@ generate_jni("jni_headers") {
"java/src/org/chromium/chrome/browser/autofill_assistant/AssistantDialogButton.java", "java/src/org/chromium/chrome/browser/autofill_assistant/AssistantDialogButton.java",
"java/src/org/chromium/chrome/browser/autofill_assistant/AssistantInfoPopup.java", "java/src/org/chromium/chrome/browser/autofill_assistant/AssistantInfoPopup.java",
"java/src/org/chromium/chrome/browser/autofill_assistant/AssistantModel.java", "java/src/org/chromium/chrome/browser/autofill_assistant/AssistantModel.java",
"java/src/org/chromium/chrome/browser/autofill_assistant/AssistantOnboardingCoordinator.java",
"java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantClient.java", "java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantClient.java",
"java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantDirectActionImpl.java", "java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantDirectActionImpl.java",
"java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantLiteService.java", "java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantLiteService.java",
"java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantUiController.java", "java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantUiController.java",
"java/src/org/chromium/chrome/browser/autofill_assistant/BaseOnboardingCoordinator.java",
"java/src/org/chromium/chrome/browser/autofill_assistant/carousel/AssistantChip.java", "java/src/org/chromium/chrome/browser/autofill_assistant/carousel/AssistantChip.java",
"java/src/org/chromium/chrome/browser/autofill_assistant/details/AssistantDetails.java", "java/src/org/chromium/chrome/browser/autofill_assistant/details/AssistantDetails.java",
"java/src/org/chromium/chrome/browser/autofill_assistant/details/AssistantDetailsModel.java", "java/src/org/chromium/chrome/browser/autofill_assistant/details/AssistantDetailsModel.java",
...@@ -270,7 +271,6 @@ android_library("test_java") { ...@@ -270,7 +271,6 @@ android_library("test_java") {
testonly = true testonly = true
sources = [ sources = [
"javatests/src/org/chromium/chrome/browser/autofill_assistant/AssistantOnboardingCoordinatorTest.java",
"javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantAccessibilityIntegrationTest.java", "javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantAccessibilityIntegrationTest.java",
"javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantActionsCarouselUiTest.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/AutofillAssistantAutostartTest.java",
...@@ -299,6 +299,7 @@ android_library("test_java") { ...@@ -299,6 +299,7 @@ android_library("test_java") {
"javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantTriggerScriptIntegrationTest.java", "javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantTriggerScriptIntegrationTest.java",
"javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantUiTest.java", "javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantUiTest.java",
"javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantUiTestUtil.java", "javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantUiTestUtil.java",
"javatests/src/org/chromium/chrome/browser/autofill_assistant/BottomSheetOnboardingCoordinatorTest.java",
"javatests/src/org/chromium/chrome/browser/autofill_assistant/TestingAutofillAssistantModuleEntryProvider.java", "javatests/src/org/chromium/chrome/browser/autofill_assistant/TestingAutofillAssistantModuleEntryProvider.java",
] ]
......
...@@ -82,8 +82,8 @@ class AutofillAssistantActionHandlerImpl implements AutofillAssistantActionHandl ...@@ -82,8 +82,8 @@ class AutofillAssistantActionHandlerImpl implements AutofillAssistantActionHandl
public void performOnboarding( public void performOnboarding(
String experimentIds, Bundle arguments, Callback<Boolean> callback) { String experimentIds, Bundle arguments, Callback<Boolean> callback) {
Map<String, String> parameters = toArgumentMap(arguments); Map<String, String> parameters = toArgumentMap(arguments);
AssistantOnboardingCoordinator coordinator = BottomSheetOnboardingCoordinator coordinator =
new AssistantOnboardingCoordinator(experimentIds, parameters, mContext, new BottomSheetOnboardingCoordinator(experimentIds, parameters, mContext,
mBottomSheetController, mBrowserControls, mCompositorViewHolder, mScrim); mBottomSheetController, mBrowserControls, mCompositorViewHolder, mScrim);
coordinator.show(accepted -> { coordinator.show(accepted -> {
coordinator.hide(); coordinator.hide();
...@@ -101,13 +101,13 @@ class AutofillAssistantActionHandlerImpl implements AutofillAssistantActionHandl ...@@ -101,13 +101,13 @@ class AutofillAssistantActionHandlerImpl implements AutofillAssistantActionHandl
} }
Map<String, String> argumentMap = toArgumentMap(arguments); Map<String, String> argumentMap = toArgumentMap(arguments);
Callback<AssistantOnboardingCoordinator> afterOnboarding = (onboardingCoordinator) -> { Callback<BottomSheetOnboardingCoordinator> afterOnboarding = (onboardingCoordinator) -> {
callback.onResult(client.performDirectAction( callback.onResult(client.performDirectAction(
name, experimentIds, argumentMap, onboardingCoordinator)); name, experimentIds, argumentMap, onboardingCoordinator));
}; };
if (!AutofillAssistantPreferencesUtil.isAutofillOnboardingAccepted()) { if (!AutofillAssistantPreferencesUtil.isAutofillOnboardingAccepted()) {
AssistantOnboardingCoordinator coordinator = new AssistantOnboardingCoordinator( BottomSheetOnboardingCoordinator coordinator = new BottomSheetOnboardingCoordinator(
experimentIds, argumentMap, mContext, mBottomSheetController, mBrowserControls, experimentIds, argumentMap, mContext, mBottomSheetController, mBrowserControls,
mCompositorViewHolder, mScrim); mCompositorViewHolder, mScrim);
coordinator.show(accepted -> { coordinator.show(accepted -> {
......
...@@ -109,7 +109,7 @@ public class AutofillAssistantClient { ...@@ -109,7 +109,7 @@ public class AutofillAssistantClient {
*/ */
boolean start(String initialUrl, Map<String, String> parameters, String experimentIds, boolean start(String initialUrl, Map<String, String> parameters, String experimentIds,
@Nullable String callerAccount, @Nullable String userName, boolean isChromeCustomTab, @Nullable String callerAccount, @Nullable String userName, boolean isChromeCustomTab,
@Nullable AssistantOnboardingCoordinator onboardingCoordinator) { @Nullable BaseOnboardingCoordinator onboardingCoordinator) {
if (mNativeClientAndroid == 0) return false; if (mNativeClientAndroid == 0) return false;
checkNativeClientIsAliveOrThrow(); checkNativeClientIsAliveOrThrow();
...@@ -213,7 +213,7 @@ public class AutofillAssistantClient { ...@@ -213,7 +213,7 @@ public class AutofillAssistantClient {
*/ */
public boolean performDirectAction(String actionId, String experimentIds, public boolean performDirectAction(String actionId, String experimentIds,
Map<String, String> arguments, Map<String, String> arguments,
@Nullable AssistantOnboardingCoordinator onboardingCoordinator) { @Nullable BaseOnboardingCoordinator onboardingCoordinator) {
if (mNativeClientAndroid == 0) return false; if (mNativeClientAndroid == 0) return false;
// Note that only fetchWebsiteActions can start AA, so only it needs // Note that only fetchWebsiteActions can start AA, so only it needs
...@@ -405,8 +405,8 @@ public class AutofillAssistantClient { ...@@ -405,8 +405,8 @@ public class AutofillAssistantClient {
boolean start(long nativeClientAndroid, AutofillAssistantClient caller, String initialUrl, boolean start(long nativeClientAndroid, AutofillAssistantClient caller, String initialUrl,
String experimentIds, String callerAccount, String[] parameterNames, String experimentIds, String callerAccount, String[] parameterNames,
String[] parameterValues, boolean isChromeCustomTab, String[] parameterValues, boolean isChromeCustomTab,
@Nullable AssistantOnboardingCoordinator onboardingCoordinator, @Nullable BaseOnboardingCoordinator onboardingCoordinator, boolean onboardingShown,
boolean onboardingShown, long nativeService); long nativeService);
void startTriggerScript(long nativeClientAndroid, AutofillAssistantClient caller, void startTriggerScript(long nativeClientAndroid, AutofillAssistantClient caller,
AssistantTriggerScriptBridge delegate, String initialUrl, String experimentIds, AssistantTriggerScriptBridge delegate, String initialUrl, String experimentIds,
String[] parameterNames, String[] parameterValues, long nativeServiceRequestSender); String[] parameterNames, String[] parameterValues, long nativeServiceRequestSender);
...@@ -426,7 +426,6 @@ public class AutofillAssistantClient { ...@@ -426,7 +426,6 @@ public class AutofillAssistantClient {
boolean performDirectAction(long nativeClientAndroid, AutofillAssistantClient caller, boolean performDirectAction(long nativeClientAndroid, AutofillAssistantClient caller,
String actionId, String experimentId, String[] argumentNames, String actionId, String experimentId, String[] argumentNames,
String[] argumentValues, String[] argumentValues, @Nullable BaseOnboardingCoordinator onboardingCoordinator);
@Nullable AssistantOnboardingCoordinator onboardingCoordinator);
} }
} }
...@@ -167,9 +167,11 @@ public class AutofillAssistantModuleEntryImpl implements AutofillAssistantModule ...@@ -167,9 +167,11 @@ public class AutofillAssistantModuleEntryImpl implements AutofillAssistantModule
return; return;
} }
AssistantOnboardingCoordinator onboardingCoordinator = new AssistantOnboardingCoordinator( BottomSheetOnboardingCoordinator onboardingCoordinator =
experimentIds, parameters, context, bottomSheetController, browserControls, new BottomSheetOnboardingCoordinator(experimentIds, parameters, context,
compositorViewHolder, bottomSheetController.getScrimCoordinator()); bottomSheetController, browserControls, compositorViewHolder,
bottomSheetController.getScrimCoordinator());
onboardingCoordinator.show(accepted -> { onboardingCoordinator.show(accepted -> {
if (parameters.containsKey(PARAMETER_TRIGGER_SCRIPT_USED) if (parameters.containsKey(PARAMETER_TRIGGER_SCRIPT_USED)
|| parameters.containsKey(PARAMETER_STARTED_WITH_TRIGGER_SCRIPT)) { || parameters.containsKey(PARAMETER_STARTED_WITH_TRIGGER_SCRIPT)) {
......
...@@ -104,7 +104,7 @@ public class AutofillAssistantUiController { ...@@ -104,7 +104,7 @@ public class AutofillAssistantUiController {
@CalledByNative @CalledByNative
private static AutofillAssistantUiController create(ChromeActivity activity, private static AutofillAssistantUiController create(ChromeActivity activity,
boolean allowTabSwitching, long nativeUiController, boolean allowTabSwitching, long nativeUiController,
@Nullable AssistantOnboardingCoordinator onboardingCoordinator) { @Nullable BaseOnboardingCoordinator onboardingCoordinator) {
BottomSheetController sheetController = BottomSheetController sheetController =
BottomSheetControllerProvider.from(activity.getWindowAndroid()); BottomSheetControllerProvider.from(activity.getWindowAndroid());
assert activity != null; assert activity != null;
...@@ -124,8 +124,7 @@ public class AutofillAssistantUiController { ...@@ -124,8 +124,7 @@ public class AutofillAssistantUiController {
private AutofillAssistantUiController(ChromeActivity activity, BottomSheetController controller, private AutofillAssistantUiController(ChromeActivity activity, BottomSheetController controller,
TabObscuringHandler tabObscuringHandler, boolean allowTabSwitching, TabObscuringHandler tabObscuringHandler, boolean allowTabSwitching,
long nativeUiController, long nativeUiController, @Nullable BaseOnboardingCoordinator onboardingCoordinator) {
@Nullable AssistantOnboardingCoordinator onboardingCoordinator) {
mNativeUiController = nativeUiController; mNativeUiController = nativeUiController;
mActivity = activity; mActivity = activity;
mCoordinator = new AssistantCoordinator(activity, controller, tabObscuringHandler, mCoordinator = new AssistantCoordinator(activity, controller, tabObscuringHandler,
......
// 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 android.content.Context;
import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import org.chromium.base.Callback;
import org.chromium.chrome.browser.autofill_assistant.metrics.DropOutReason;
import org.chromium.chrome.browser.autofill_assistant.metrics.OnBoarding;
import org.chromium.chrome.browser.autofill_assistant.overlay.AssistantOverlayCoordinator;
import org.chromium.chrome.browser.autofill_assistant.overlay.AssistantOverlayModel;
import org.chromium.chrome.browser.autofill_assistant.overlay.AssistantOverlayState;
import org.chromium.chrome.browser.browser_controls.BrowserControlsStateProvider;
import org.chromium.chrome.browser.compositor.CompositorViewHolder;
import org.chromium.components.browser_ui.bottomsheet.BottomSheetContent;
import org.chromium.components.browser_ui.bottomsheet.BottomSheetController;
import org.chromium.components.browser_ui.bottomsheet.BottomSheetController.SheetState;
import org.chromium.components.browser_ui.bottomsheet.BottomSheetObserver;
import org.chromium.components.browser_ui.bottomsheet.EmptyBottomSheetObserver;
import org.chromium.components.browser_ui.widget.scrim.ScrimCoordinator;
import java.util.Map;
/**
* Coordinator responsible for showing the bottom sheet onboarding screen when the user is using the
* Autofill Assistant for the first time.
*/
class BottomSheetOnboardingCoordinator extends BaseOnboardingCoordinator {
@Nullable
private AssistantBottomSheetContent mContent;
private BottomSheetObserver mBottomSheetObserver;
private final BottomSheetController mController;
private final BrowserControlsStateProvider mBrowserControls;
private final CompositorViewHolder mCompositorViewHolder;
private final ScrimCoordinator mScrimCoordinator;
@Nullable
AssistantOverlayCoordinator mOverlayCoordinator;
BottomSheetOnboardingCoordinator(String experimentIds, Map<String, String> parameters,
Context context, BottomSheetController controller,
BrowserControlsStateProvider browserControls, CompositorViewHolder compositorViewHolder,
ScrimCoordinator scrim) {
super(experimentIds, parameters, context);
this.mController = controller;
this.mBrowserControls = browserControls;
this.mCompositorViewHolder = compositorViewHolder;
this.mScrimCoordinator = scrim;
}
@Override
void initViewImpl(Callback<Boolean> callback) {
// If there's a tab, cover it with an overlay.
AssistantOverlayModel overlayModel = new AssistantOverlayModel();
mOverlayCoordinator = new AssistantOverlayCoordinator(
mContext, mBrowserControls, mCompositorViewHolder, mScrimCoordinator, overlayModel);
overlayModel.set(AssistantOverlayModel.STATE, AssistantOverlayState.FULL);
mBottomSheetObserver = new EmptyBottomSheetObserver() {
@Override
public void onSheetStateChanged(int newState) {
if (mOverlayCoordinator == null) {
return;
}
if (newState == SheetState.HIDDEN) {
mOverlayCoordinator.suppress();
}
if (newState == SheetState.PEEK || newState == SheetState.HALF
|| newState == SheetState.FULL) {
mOverlayCoordinator.restore();
}
}
};
mController.addObserver(mBottomSheetObserver);
AssistantBottomBarDelegate delegate = new AssistantBottomBarDelegate() {
@Override
public boolean onBackButtonPressed() {
onUserAction(
/* accept= */ false, callback, OnBoarding.OB_NO_ANSWER,
DropOutReason.ONBOARDING_BACK_BUTTON_CLICKED);
return true;
}
@Override
public void onBottomSheetClosedWithSwipe() {}
};
BottomSheetContent currentSheetContent = mController.getCurrentSheetContent();
if (currentSheetContent instanceof AssistantBottomSheetContent) {
mContent = (AssistantBottomSheetContent) currentSheetContent;
mContent.setDelegate(() -> delegate);
} else {
mContent = new AssistantBottomSheetContent(mContext, () -> delegate);
}
}
@Override
void showViewImpl() {
mContent.setContent(mView, mView);
BottomSheetUtils.showContentAndMaybeExpand(
mController, mContent, /* shouldExpand = */ true, mAnimate);
}
/**
* Transfers ownership of the controls to the caller, returns the overlay coordinator, if one
* was created.
*
* <p>This call is only useful when called from inside a callback provided to {@link #show}, as
* before that there are no controls and after that the coordinator automatically hides them.
* This call allows callbacks to reuse the controls setup for onboarding and provide a smooth
* transition.
*/
@Nullable
@Override
AssistantOverlayCoordinator transferControls() {
assert isInProgress();
mContent = null;
AssistantOverlayCoordinator coordinator = mOverlayCoordinator;
mOverlayCoordinator = null;
return coordinator;
}
/** Hides the UI, if one is shown. */
@Override
void hide() {
mController.removeObserver(mBottomSheetObserver);
if (mContent != null) {
mController.hideContent(mContent, /* animate= */ mAnimate);
mContent = null;
}
if (mOverlayCoordinator != null) {
mOverlayCoordinator.destroy();
mOverlayCoordinator = null;
}
destroy();
}
/**
* Returns {@code true} between the time {@link #show} is called and the time
* the callback has returned.
*/
@VisibleForTesting
boolean isInProgress() {
return mContent != null;
}
}
\ No newline at end of file
...@@ -54,7 +54,6 @@ import org.chromium.chrome.browser.autofill_assistant.overlay.AssistantOverlaySt ...@@ -54,7 +54,6 @@ import org.chromium.chrome.browser.autofill_assistant.overlay.AssistantOverlaySt
import org.chromium.chrome.browser.customtabs.CustomTabActivity; import org.chromium.chrome.browser.customtabs.CustomTabActivity;
import org.chromium.chrome.browser.customtabs.CustomTabActivityTestRule; import org.chromium.chrome.browser.customtabs.CustomTabActivityTestRule;
import org.chromium.chrome.browser.flags.ChromeSwitches; import org.chromium.chrome.browser.flags.ChromeSwitches;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.test.ChromeJUnit4ClassRunner; import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
import org.chromium.components.browser_ui.bottomsheet.BottomSheetController; import org.chromium.components.browser_ui.bottomsheet.BottomSheetController;
import org.chromium.components.browser_ui.widget.scrim.ScrimCoordinator; import org.chromium.components.browser_ui.widget.scrim.ScrimCoordinator;
...@@ -66,11 +65,11 @@ import java.util.HashMap; ...@@ -66,11 +65,11 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
/** /**
* Tests {@link AssistantOnboardingCoordinator} * Tests {@link BottomSheetOnboardingCoordinator}
*/ */
@RunWith(ChromeJUnit4ClassRunner.class) @RunWith(ChromeJUnit4ClassRunner.class)
@CommandLineFlags.Add(ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE) @CommandLineFlags.Add(ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE)
public class AssistantOnboardingCoordinatorTest { public class BottomSheetOnboardingCoordinatorTest {
@Rule @Rule
public CustomTabActivityTestRule mCustomTabActivityTestRule = new CustomTabActivityTestRule(); public CustomTabActivityTestRule mCustomTabActivityTestRule = new CustomTabActivityTestRule();
...@@ -82,7 +81,6 @@ public class AssistantOnboardingCoordinatorTest { ...@@ -82,7 +81,6 @@ public class AssistantOnboardingCoordinatorTest {
private ChromeActivity mActivity; private ChromeActivity mActivity;
private BottomSheetController mBottomSheetController; private BottomSheetController mBottomSheetController;
private Tab mTab;
private ScrimCoordinator mScrimCoordinator; private ScrimCoordinator mScrimCoordinator;
@Before @Before
...@@ -91,15 +89,14 @@ public class AssistantOnboardingCoordinatorTest { ...@@ -91,15 +89,14 @@ public class AssistantOnboardingCoordinatorTest {
mActivity = mCustomTabActivityTestRule.getActivity(); mActivity = mCustomTabActivityTestRule.getActivity();
mBottomSheetController = TestThreadUtils.runOnUiThreadBlocking( mBottomSheetController = TestThreadUtils.runOnUiThreadBlocking(
() -> AutofillAssistantUiTestUtil.getBottomSheetController(mActivity)); () -> AutofillAssistantUiTestUtil.getBottomSheetController(mActivity));
mTab = mActivity.getTabModelSelector().getCurrentTab();
mScrimCoordinator = mCustomTabActivityTestRule.getActivity() mScrimCoordinator = mCustomTabActivityTestRule.getActivity()
.getRootUiCoordinatorForTesting() .getRootUiCoordinatorForTesting()
.getScrimCoordinator(); .getScrimCoordinator();
} }
private AssistantOnboardingCoordinator createCoordinator(Tab tab) { private BottomSheetOnboardingCoordinator createCoordinator() {
AssistantOnboardingCoordinator coordinator = BottomSheetOnboardingCoordinator coordinator =
new AssistantOnboardingCoordinator("", new HashMap<String, String>(), mActivity, new BottomSheetOnboardingCoordinator("", new HashMap<String, String>(), mActivity,
mBottomSheetController, mActivity.getBrowserControlsManager(), mBottomSheetController, mActivity.getBrowserControlsManager(),
mActivity.getCompositorViewHolder(), mScrimCoordinator); mActivity.getCompositorViewHolder(), mScrimCoordinator);
coordinator.disableAnimationForTesting(); coordinator.disableAnimationForTesting();
...@@ -121,7 +118,7 @@ public class AssistantOnboardingCoordinatorTest { ...@@ -121,7 +118,7 @@ public class AssistantOnboardingCoordinatorTest {
private void testOnboarding(@IdRes int buttonToClick, boolean expectAccept) throws Exception { private void testOnboarding(@IdRes int buttonToClick, boolean expectAccept) throws Exception {
AutofillAssistantPreferencesUtil.setInitialPreferences(!expectAccept); AutofillAssistantPreferencesUtil.setInitialPreferences(!expectAccept);
AssistantOnboardingCoordinator coordinator = createCoordinator(mTab); BottomSheetOnboardingCoordinator coordinator = createCoordinator();
showOnboardingAndWait(coordinator, mCallback); showOnboardingAndWait(coordinator, mCallback);
assertTrue(TestThreadUtils.runOnUiThreadBlocking(coordinator::isInProgress)); assertTrue(TestThreadUtils.runOnUiThreadBlocking(coordinator::isInProgress));
...@@ -136,7 +133,7 @@ public class AssistantOnboardingCoordinatorTest { ...@@ -136,7 +133,7 @@ public class AssistantOnboardingCoordinatorTest {
@Test @Test
@MediumTest @MediumTest
public void testOnboardingWithNoTabs() { public void testOnboardingWithNoTabs() {
AssistantOnboardingCoordinator coordinator = createCoordinator(/* tab= */ null); BottomSheetOnboardingCoordinator coordinator = createCoordinator();
showOnboardingAndWait(coordinator, mCallback); showOnboardingAndWait(coordinator, mCallback);
onView(withId(R.id.button_init_ok)).perform(click()); onView(withId(R.id.button_init_ok)).perform(click());
...@@ -147,7 +144,7 @@ public class AssistantOnboardingCoordinatorTest { ...@@ -147,7 +144,7 @@ public class AssistantOnboardingCoordinatorTest {
@Test @Test
@MediumTest @MediumTest
public void testTransferControls() throws Exception { public void testTransferControls() throws Exception {
AssistantOnboardingCoordinator coordinator = createCoordinator(mTab); BottomSheetOnboardingCoordinator coordinator = createCoordinator();
List<AssistantOverlayCoordinator> capturedOverlays = List<AssistantOverlayCoordinator> capturedOverlays =
Collections.synchronizedList(new ArrayList<>()); Collections.synchronizedList(new ArrayList<>());
...@@ -173,7 +170,7 @@ public class AssistantOnboardingCoordinatorTest { ...@@ -173,7 +170,7 @@ public class AssistantOnboardingCoordinatorTest {
@Test @Test
@MediumTest @MediumTest
public void testShownFlag() { public void testShownFlag() {
AssistantOnboardingCoordinator coordinator = createCoordinator(/* tab= */ null); BottomSheetOnboardingCoordinator coordinator = createCoordinator();
assertFalse(coordinator.getOnboardingShown()); assertFalse(coordinator.getOnboardingShown());
showOnboardingAndWait(coordinator, mCallback); showOnboardingAndWait(coordinator, mCallback);
...@@ -187,8 +184,8 @@ public class AssistantOnboardingCoordinatorTest { ...@@ -187,8 +184,8 @@ public class AssistantOnboardingCoordinatorTest {
HashMap<String, String> parameters = new HashMap(); HashMap<String, String> parameters = new HashMap();
parameters.put("INTENT", "RENT_CAR"); parameters.put("INTENT", "RENT_CAR");
AssistantOnboardingCoordinator coordinator = BottomSheetOnboardingCoordinator coordinator =
new AssistantOnboardingCoordinator("", parameters, mActivity, new BottomSheetOnboardingCoordinator("", parameters, mActivity,
mBottomSheetController, mActivity.getBrowserControlsManager(), mBottomSheetController, mActivity.getBrowserControlsManager(),
mActivity.getCompositorViewHolder(), mScrimCoordinator); mActivity.getCompositorViewHolder(), mScrimCoordinator);
coordinator.disableAnimationForTesting(); coordinator.disableAnimationForTesting();
...@@ -211,8 +208,8 @@ public class AssistantOnboardingCoordinatorTest { ...@@ -211,8 +208,8 @@ public class AssistantOnboardingCoordinatorTest {
HashMap<String, String> parameters = new HashMap(); HashMap<String, String> parameters = new HashMap();
parameters.put("INTENT", "BUY_MOVIE_TICKET"); parameters.put("INTENT", "BUY_MOVIE_TICKET");
AssistantOnboardingCoordinator coordinator = BottomSheetOnboardingCoordinator coordinator =
new AssistantOnboardingCoordinator("4363482", parameters, mActivity, new BottomSheetOnboardingCoordinator("4363482", parameters, mActivity,
mBottomSheetController, mActivity.getBrowserControlsManager(), mBottomSheetController, mActivity.getBrowserControlsManager(),
mActivity.getCompositorViewHolder(), mScrimCoordinator); mActivity.getCompositorViewHolder(), mScrimCoordinator);
coordinator.disableAnimationForTesting(); coordinator.disableAnimationForTesting();
...@@ -234,8 +231,8 @@ public class AssistantOnboardingCoordinatorTest { ...@@ -234,8 +231,8 @@ public class AssistantOnboardingCoordinatorTest {
AutofillAssistantPreferencesUtil.setInitialPreferences(true); AutofillAssistantPreferencesUtil.setInitialPreferences(true);
HashMap<String, String> parameters = new HashMap(); HashMap<String, String> parameters = new HashMap();
AssistantOnboardingCoordinator coordinator = BottomSheetOnboardingCoordinator coordinator =
new AssistantOnboardingCoordinator("", parameters, mActivity, new BottomSheetOnboardingCoordinator("", parameters, mActivity,
mBottomSheetController, mActivity.getBrowserControlsManager(), mBottomSheetController, mActivity.getBrowserControlsManager(),
mActivity.getCompositorViewHolder(), mScrimCoordinator); mActivity.getCompositorViewHolder(), mScrimCoordinator);
coordinator.disableAnimationForTesting(); coordinator.disableAnimationForTesting();
...@@ -257,8 +254,8 @@ public class AssistantOnboardingCoordinatorTest { ...@@ -257,8 +254,8 @@ public class AssistantOnboardingCoordinatorTest {
HashMap<String, String> parameters = new HashMap<>(); HashMap<String, String> parameters = new HashMap<>();
parameters.put("ONBOARDING_FETCH_TIMEOUT_MS", "0"); parameters.put("ONBOARDING_FETCH_TIMEOUT_MS", "0");
AssistantOnboardingCoordinator coordinator = BottomSheetOnboardingCoordinator coordinator =
new AssistantOnboardingCoordinator("", parameters, mActivity, new BottomSheetOnboardingCoordinator("", parameters, mActivity,
mBottomSheetController, mActivity.getBrowserControlsManager(), mBottomSheetController, mActivity.getBrowserControlsManager(),
mActivity.getCompositorViewHolder(), mScrimCoordinator); mActivity.getCompositorViewHolder(), mScrimCoordinator);
...@@ -309,8 +306,8 @@ public class AssistantOnboardingCoordinatorTest { ...@@ -309,8 +306,8 @@ public class AssistantOnboardingCoordinatorTest {
HashMap<String, String> parameters = new HashMap<>(); HashMap<String, String> parameters = new HashMap<>();
parameters.put("ONBOARDING_FETCH_TIMEOUT_MS", "0"); parameters.put("ONBOARDING_FETCH_TIMEOUT_MS", "0");
AssistantOnboardingCoordinator coordinator = BottomSheetOnboardingCoordinator coordinator =
new AssistantOnboardingCoordinator("", parameters, mActivity, new BottomSheetOnboardingCoordinator("", parameters, mActivity,
mBottomSheetController, mActivity.getBrowserControlsManager(), mBottomSheetController, mActivity.getBrowserControlsManager(),
mActivity.getCompositorViewHolder(), mScrimCoordinator); mActivity.getCompositorViewHolder(), mScrimCoordinator);
...@@ -335,8 +332,8 @@ public class AssistantOnboardingCoordinatorTest { ...@@ -335,8 +332,8 @@ public class AssistantOnboardingCoordinatorTest {
HashMap<String, String> parameters = new HashMap<>(); HashMap<String, String> parameters = new HashMap<>();
parameters.put("ONBOARDING_FETCH_TIMEOUT_MS", "0"); parameters.put("ONBOARDING_FETCH_TIMEOUT_MS", "0");
AssistantOnboardingCoordinator coordinator = BottomSheetOnboardingCoordinator coordinator =
new AssistantOnboardingCoordinator("", parameters, mActivity, new BottomSheetOnboardingCoordinator("", parameters, mActivity,
mBottomSheetController, mActivity.getBrowserControlsManager(), mBottomSheetController, mActivity.getBrowserControlsManager(),
mActivity.getCompositorViewHolder(), mScrimCoordinator); mActivity.getCompositorViewHolder(), mScrimCoordinator);
...@@ -373,7 +370,7 @@ public class AssistantOnboardingCoordinatorTest { ...@@ -373,7 +370,7 @@ public class AssistantOnboardingCoordinatorTest {
/** Trigger onboarding and wait until it is fully displayed. */ /** Trigger onboarding and wait until it is fully displayed. */
private void showOnboardingAndWait( private void showOnboardingAndWait(
AssistantOnboardingCoordinator coordinator, Callback<Boolean> callback) { BottomSheetOnboardingCoordinator coordinator, Callback<Boolean> callback) {
TestThreadUtils.runOnUiThreadBlocking(() -> coordinator.show(callback)); TestThreadUtils.runOnUiThreadBlocking(() -> coordinator.show(callback));
waitUntilViewMatchesCondition(withId(R.id.button_init_ok), isCompletelyDisplayed()); waitUntilViewMatchesCondition(withId(R.id.button_init_ok), isCompletelyDisplayed());
} }
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
#include "base/android/jni_string.h" #include "base/android/jni_string.h"
#include "base/containers/flat_map.h" #include "base/containers/flat_map.h"
#include "chrome/android/features/autofill_assistant/jni_headers/AssistantOnboardingCoordinator_jni.h" #include "chrome/android/features/autofill_assistant/jni_headers/BaseOnboardingCoordinator_jni.h"
#include "chrome/browser/android/autofill_assistant/onboarding_fetcher_factory.h" #include "chrome/browser/android/autofill_assistant/onboarding_fetcher_factory.h"
#include "chrome/browser/profiles/profile_manager.h" #include "chrome/browser/profiles/profile_manager.h"
#include "components/autofill_assistant/browser/autofill_assistant_onboarding_fetcher.h" #include "components/autofill_assistant/browser/autofill_assistant_onboarding_fetcher.h"
...@@ -21,27 +21,27 @@ void UpdateView( ...@@ -21,27 +21,27 @@ void UpdateView(
for (const auto& it : string_map) { for (const auto& it : string_map) {
DCHECK(!it.first.empty()); DCHECK(!it.first.empty());
DCHECK(!it.second.empty()); DCHECK(!it.second.empty());
Java_AssistantOnboardingCoordinator_addEntryToStringMap( Java_BaseOnboardingCoordinator_addEntryToStringMap(
env, jonboarding_coordinator, env, jonboarding_coordinator,
base::android::ConvertUTF8ToJavaString(env, it.first), base::android::ConvertUTF8ToJavaString(env, it.first),
base::android::ConvertUTF8ToJavaString(env, it.second)); base::android::ConvertUTF8ToJavaString(env, it.second));
} }
Java_AssistantOnboardingCoordinator_updateAndShowView( Java_BaseOnboardingCoordinator_updateAndShowView(env,
env, jonboarding_coordinator); jonboarding_coordinator);
} }
} // namespace } // namespace
// static // static
void JNI_AssistantOnboardingCoordinator_FetchOnboardingDefinition( void JNI_BaseOnboardingCoordinator_FetchOnboardingDefinition(
JNIEnv* env, JNIEnv* env,
const base::android::JavaParamRef<jobject>& jonboarding_coordinator, const base::android::JavaParamRef<jobject>& jonboarding_coordinator,
const base::android::JavaParamRef<jstring>& jintent, const base::android::JavaParamRef<jstring>& jintent,
const base::android::JavaParamRef<jstring>& jlocale, const base::android::JavaParamRef<jstring>& jlocale,
jint timeout_ms) { jint timeout_ms) {
if (!jonboarding_coordinator || !jintent || !jlocale || !timeout_ms) { if (!jonboarding_coordinator || !jintent || !jlocale || !timeout_ms) {
Java_AssistantOnboardingCoordinator_updateAndShowView( Java_BaseOnboardingCoordinator_updateAndShowView(env,
env, jonboarding_coordinator); jonboarding_coordinator);
return; return;
} }
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
namespace autofill_assistant { namespace autofill_assistant {
static void JNI_AssistantOnboardingCoordinator_FetchOnboardingDefinition( static void JNI_BaseOnboardingCoordinator_FetchOnboardingDefinition(
JNIEnv* env, JNIEnv* env,
const base::android::JavaParamRef<jobject>& jonboarding_coordinator, const base::android::JavaParamRef<jobject>& jonboarding_coordinator,
const base::android::JavaParamRef<jstring>& jintent, const base::android::JavaParamRef<jstring>& jintent,
......
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