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

[Autofill Assistant] Added onboarding via Dialog

This cl contains the set of changes required to show onboarding in a dialog for JITT.
Also this cl shouldn't have any user facing changes.

Bug: b/174445633
Change-Id: Ib52d3175e1713f573624c1af735aab93f6be1f92
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2610091Reviewed-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@{#841123}
parent 68706cee
......@@ -112,6 +112,7 @@ android_library("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/DialogOnboardingCoordinator.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/SizeListenableLinearLayout.java",
......
......@@ -64,7 +64,7 @@ abstract class BaseOnboardingCoordinator {
private WebContentsObserver mWebContentsObserver;
private boolean mOnboardingShown;
final Context mContext;
private final Context mContext;
boolean mAnimate = true;
@Nullable
ScrollView mView;
......@@ -131,8 +131,12 @@ abstract class BaseOnboardingCoordinator {
}
abstract void hide();
// TODO(b/175598484): Move transferControls to bottom sheet subclass
abstract AssistantOverlayCoordinator transferControls();
@Nullable
AssistantOverlayCoordinator transferControls() {
return null;
}
/** Destroy web contents observer. */
void destroy() {
......@@ -191,6 +195,10 @@ abstract class BaseOnboardingCoordinator {
hide();
}
Context getContext() {
return mContext;
}
@CalledByNative
@VisibleForTesting
public void addEntryToStringMap(String key, String value) {
......
......@@ -57,8 +57,8 @@ class BottomSheetOnboardingCoordinator extends BaseOnboardingCoordinator {
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);
mOverlayCoordinator = new AssistantOverlayCoordinator(getContext(), mBrowserControls,
mCompositorViewHolder, mScrimCoordinator, overlayModel);
overlayModel.set(AssistantOverlayModel.STATE, AssistantOverlayState.FULL);
mBottomSheetObserver = new EmptyBottomSheetObserver() {
......@@ -96,7 +96,7 @@ class BottomSheetOnboardingCoordinator extends BaseOnboardingCoordinator {
mContent = (AssistantBottomSheetContent) currentSheetContent;
mContent.setDelegate(() -> delegate);
} else {
mContent = new AssistantBottomSheetContent(mContext, () -> delegate);
mContent = new AssistantBottomSheetContent(getContext(), () -> delegate);
}
}
......
// Copyright 2021 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 android.content.DialogInterface;
import android.content.DialogInterface.OnDismissListener;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
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.ui.UiUtils;
import java.util.Map;
/**
* Coordinator responsible for showing the dialog onboarding screen when the user is using the
* Autofill Assistant for the first time.
*/
class DialogOnboardingCoordinator extends BaseOnboardingCoordinator {
@Nullable
AlertDialog mDialog;
DialogOnboardingCoordinator(
String experimentIds, Map<String, String> parameters, Context context) {
super(experimentIds, parameters, context);
}
@Override
void initViewImpl(Callback<Boolean> callback) {
mDialog = new UiUtils
.CompatibleAlertDialogBuilder(getContext(),
org.chromium.chrome.autofill_assistant.R.style
.Theme_Chromium_AlertDialog)
.create();
mDialog.setOnDismissListener(new OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
onUserAction(
/* accept= */ false, callback, OnBoarding.OB_NO_ANSWER,
DropOutReason.ONBOARDING_DIALOG_DISMISSED);
}
});
mDialog.setView(mView);
}
@Override
void showViewImpl() {
mDialog.show();
}
@Override
void hide() {
if (mDialog != null) {
mDialog.cancel();
mDialog = null;
}
destroy();
}
}
\ No newline at end of file
......@@ -52,8 +52,9 @@ class Metrics {
NAVIGATION_WHILE_RUNNING = 24,
UI_CLOSED_UNEXPECTEDLY = 25, // This is a "should never happen" entry.
ONBOARDING_NAVIGATION = 26,
ONBOARDING_DIALOG_DISMISSED = 27,
kMaxValue = ONBOARDING_NAVIGATION
kMaxValue = ONBOARDING_DIALOG_DISMISSED
};
// The different ways that autofill assistant can stop.
......@@ -429,6 +430,9 @@ class Metrics {
case DropOutReason::ONBOARDING_NAVIGATION:
out << "ONBOARDING_NAVIGATION";
break;
case DropOutReason::ONBOARDING_DIALOG_DISMISSED:
out << "ONBOARDING_DIALOG_DISMISSED";
break;
// Do not add default case to force compilation error for new values.
}
return out;
......
......@@ -4614,6 +4614,7 @@ others/histograms.xml -->
<int value="24" label="User navigation in RUNNING state"/>
<int value="25" label="The UI was closed unexpectedly"/>
<int value="26" label="User navigated during onboarding"/>
<int value="27" label="User dismissed the onboarding dialog"/>
</enum>
<enum name="AutofillAssistantFeatureModuleInstallation">
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