Commit 84126833 authored by Patrick Noland's avatar Patrick Noland Committed by Commit Bot

[ToolbarMVC] Create CustomTabToolbar's LocationBar via factory method

This lets us re-hide the implementing class and wire dependencies to its
constructor.

Bug: 1140188
Change-Id: Idbe3c9c9b061cb657a3a04fa60cb6fc2dece260f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2486079Reviewed-by: default avatarMatthew Jones <mdjones@chromium.org>
Reviewed-by: default avatarFilip Gorski <fgorski@chromium.org>
Reviewed-by: default avatarPeter Conn <peconn@chromium.org>
Commit-Queue: Patrick Noland <pnoland@chromium.org>
Cr-Commit-Position: refs/heads/master@{#819526}
parent 143cac1b
......@@ -60,8 +60,6 @@ import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tab.TrustedCdn;
import org.chromium.chrome.browser.toolbar.ToolbarColors;
import org.chromium.chrome.browser.toolbar.ToolbarDataProvider;
import org.chromium.chrome.browser.toolbar.ToolbarTabController;
import org.chromium.chrome.browser.toolbar.menu_button.MenuButtonCoordinator;
import org.chromium.chrome.browser.toolbar.top.ToolbarActionModeCallback;
import org.chromium.chrome.browser.toolbar.top.ToolbarLayout;
import org.chromium.chrome.browser.toolbar.top.ToolbarPhone;
......@@ -159,7 +157,6 @@ public class CustomTabToolbar extends ToolbarLayout implements View.OnLongClickL
private int mState = STATE_DOMAIN_ONLY;
private String mFirstUrl;
protected ToolbarDataProvider mToolbarDataProvider;
private CustomTabLocationBar mLocationBar;
private Runnable mTitleAnimationStarter = new Runnable() {
......@@ -191,8 +188,6 @@ public class CustomTabToolbar extends ToolbarLayout implements View.OnLongClickL
mLiteStatusView = findViewById(R.id.url_bar_lite_status);
mLiteStatusSeparatorView = findViewById(R.id.url_bar_lite_status_separator);
mUrlCoordinator = new UrlBarCoordinator((UrlBar) mUrlBar);
mLocationBar = new CustomTabLocationBar();
mUrlCoordinator.setDelegate(mLocationBar);
mUrlCoordinator.setAllowFocus(false);
mTitleBar = findViewById(R.id.title_bar);
mLocationBarFrameLayout = findViewById(R.id.location_bar_frame_layout);
......@@ -207,14 +202,6 @@ public class CustomTabToolbar extends ToolbarLayout implements View.OnLongClickL
mSecurityButton, mTitleUrlContainer, R.dimen.location_bar_icon_width);
}
@Override
protected void initialize(ToolbarDataProvider toolbarDataProvider,
ToolbarTabController tabController, MenuButtonCoordinator menuButtonCoordinator) {
super.initialize(toolbarDataProvider, tabController, menuButtonCoordinator);
mLocationBar.setToolbarDataProvider(toolbarDataProvider);
mLocationBar.updateVisualsForState();
}
@Override
public void onNativeLibraryReady() {
super.onNativeLibraryReady();
......@@ -258,6 +245,27 @@ public class CustomTabToolbar extends ToolbarLayout implements View.OnLongClickL
updateCustomActionButtonVisuals(button, drawable, description);
}
/**
*
* @param toolbarDataProvider {@link ToolbarDataProvider} to be used for accessing Toolbar
* state.
* @return The LocationBar implementation for this CustomTabToolbar.
*/
public LocationBar createLocationBar(ToolbarDataProvider toolbarDataProvider) {
mLocationBar = new CustomTabLocationBar(toolbarDataProvider);
mUrlCoordinator.setDelegate(mLocationBar);
mLocationBar.updateVisualsForState();
return mLocationBar;
}
/**
*
* @param actionModeCallback The default callback for text editing action bar to use.
*/
public void setDefaultTextEditActionModeCallback(ToolbarActionModeCallback actionModeCallback) {
mUrlCoordinator.setActionModeCallback(actionModeCallback);
}
private void updateCustomActionButtonVisuals(
ImageButton button, Drawable drawable, String description) {
Resources resources = getResources();
......@@ -389,7 +397,7 @@ public class CustomTabToolbar extends ToolbarLayout implements View.OnLongClickL
private void updateToolbarLayoutMargin() {
// We show the Incognito logo for Incognito CCT case
if (mToolbarDataProvider.isIncognito()) mIncognitoButton.setVisibility(VISIBLE);
if (getToolbarDataProvider().isIncognito()) mIncognitoButton.setVisibility(VISIBLE);
int startMargin = calculateStartMarginWhenCloseButtonVisibilityGone();
......@@ -616,7 +624,18 @@ public class CustomTabToolbar extends ToolbarLayout implements View.OnLongClickL
/**
* Custom tab-specific implementation of the LocationBar interface.
*/
public class CustomTabLocationBar implements LocationBar {
private class CustomTabLocationBar implements LocationBar {
private ToolbarDataProvider mToolbarDataProvider;
public CustomTabLocationBar(ToolbarDataProvider toolbarDataProvider) {
mToolbarDataProvider = toolbarDataProvider;
}
/** Gets the {@link ToolbarDataProvider} to be used for accessing {@link Toolbar} state. */
ToolbarDataProvider getToolbarDataProvider() {
return mToolbarDataProvider;
}
@Override
public void onNativeLibraryReady() {
mSecurityButton.setOnClickListener(v -> {
......@@ -756,16 +775,6 @@ public class CustomTabToolbar extends ToolbarLayout implements View.OnLongClickL
updateStatusIcon();
}
/** Sets the {@link ToolbarDataProvider} to be used for accessing {@link Toolbar} state. */
public void setToolbarDataProvider(ToolbarDataProvider model) {
mToolbarDataProvider = model;
}
/** Gets the {@link ToolbarDataProvider} to be used for accessing {@link Toolbar} state. */
public ToolbarDataProvider getToolbarDataProvider() {
return mToolbarDataProvider;
}
@Override
public void updateVisualsForState() {
Resources resources = getResources();
......@@ -824,10 +833,6 @@ public class CustomTabToolbar extends ToolbarLayout implements View.OnLongClickL
return mSecurityButton;
}
public void setDefaultTextEditActionModeCallback(ToolbarActionModeCallback callback) {
mUrlCoordinator.setActionModeCallback(callback);
}
@Override
public void backKeyPressed() {
assert false : "The URL bar should never take focus in CCTs.";
......
......@@ -47,7 +47,6 @@ import org.chromium.chrome.browser.compositor.layouts.OverviewModeBehavior;
import org.chromium.chrome.browser.compositor.layouts.OverviewModeBehavior.OverviewModeObserver;
import org.chromium.chrome.browser.compositor.layouts.SceneChangeObserver;
import org.chromium.chrome.browser.customtabs.features.toolbar.CustomTabToolbar;
import org.chromium.chrome.browser.customtabs.features.toolbar.CustomTabToolbar.CustomTabLocationBar;
import org.chromium.chrome.browser.feature_engagement.TrackerFactory;
import org.chromium.chrome.browser.findinpage.FindToolbarManager;
import org.chromium.chrome.browser.findinpage.FindToolbarObserver;
......@@ -345,13 +344,10 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve
mActionModeController.setTabStripHeight(mToolbar.getTabStripHeight());
if (toolbarLayout instanceof CustomTabToolbar) {
CustomTabLocationBar customTabLocationBar =
(CustomTabLocationBar) mToolbar.getLocationBar();
// TODO(https://crbug.com/1140188): Use a factory to wire these dependencies.
customTabLocationBar.setToolbarDataProvider(mLocationBarModel);
customTabLocationBar.setDefaultTextEditActionModeCallback(
CustomTabToolbar customTabToolbar = ((CustomTabToolbar) toolbarLayout);
mLocationBar = customTabToolbar.createLocationBar(mLocationBarModel);
customTabToolbar.setDefaultTextEditActionModeCallback(
mActionModeController.getActionModeCallback());
mLocationBar = customTabLocationBar;
} else {
LocationBarCoordinator locationBarCoordinator = new LocationBarCoordinator(
mActivity.findViewById(R.id.location_bar), profileSupplier, mLocationBarModel,
......
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