blob: 941bd744fad9610b5e190a5c60ccfd170727e3da [file] [log] [blame]
// Copyright 2018 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 androidx.annotation.Nullable;
import org.chromium.chrome.browser.ChromeActivity;
import org.chromium.chrome.browser.autofill_assistant.overlay.AssistantOverlayCoordinator;
import org.chromium.chrome.browser.help.HelpAndFeedback;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.widget.bottomsheet.BottomSheetController;
/**
* The main coordinator for the Autofill Assistant, responsible for instantiating all other
* sub-components and shutting down the Autofill Assistant.
*/
class AssistantCoordinator {
private static final String FEEDBACK_CATEGORY_TAG =
"com.android.chrome.USER_INITIATED_FEEDBACK_REPORT_AUTOFILL_ASSISTANT";
private final ChromeActivity mActivity;
private final AssistantModel mModel;
private AssistantBottomBarCoordinator mBottomBarCoordinator;
private final AssistantKeyboardCoordinator mKeyboardCoordinator;
private final AssistantOverlayCoordinator mOverlayCoordinator;
AssistantCoordinator(ChromeActivity activity, BottomSheetController controller,
@Nullable AssistantOverlayCoordinator overlayCoordinator) {
mActivity = activity;
if (overlayCoordinator != null) {
mModel = new AssistantModel(overlayCoordinator.getModel());
mOverlayCoordinator = overlayCoordinator;
} else {
mModel = new AssistantModel();
mOverlayCoordinator =
new AssistantOverlayCoordinator(activity, mModel.getOverlayModel());
}
mBottomBarCoordinator = new AssistantBottomBarCoordinator(activity, mModel, controller);
mKeyboardCoordinator = new AssistantKeyboardCoordinator(activity, mModel);
activity.getCompositorViewHolder().addCompositorViewResizer(mBottomBarCoordinator);
mModel.setVisible(true);
}
/** Detaches and destroys the view. */
public void destroy() {
if (mActivity.getCompositorViewHolder() != null) {
mActivity.getCompositorViewHolder().removeCompositorViewResizer(mBottomBarCoordinator);
}
mModel.setVisible(false);
mOverlayCoordinator.destroy();
mBottomBarCoordinator.destroy();
mBottomBarCoordinator = null;
}
/**
* Get the model representing the current state of the UI.
*/
public AssistantModel getModel() {
return mModel;
}
// Getters to retrieve the sub coordinators.
public AssistantBottomBarCoordinator getBottomBarCoordinator() {
return mBottomBarCoordinator;
}
/**
* Show the Chrome feedback form.
*/
public void showFeedback(String debugContext) {
HelpAndFeedback.getInstance().showFeedback(mActivity, Profile.getLastUsedProfile(),
mActivity.getActivityTab().getUrl(), FEEDBACK_CATEGORY_TAG,
FeedbackContext.buildContextString(mActivity, debugContext, 4));
}
}