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; ...@@ -60,8 +60,6 @@ import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tab.TrustedCdn; import org.chromium.chrome.browser.tab.TrustedCdn;
import org.chromium.chrome.browser.toolbar.ToolbarColors; import org.chromium.chrome.browser.toolbar.ToolbarColors;
import org.chromium.chrome.browser.toolbar.ToolbarDataProvider; 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.ToolbarActionModeCallback;
import org.chromium.chrome.browser.toolbar.top.ToolbarLayout; import org.chromium.chrome.browser.toolbar.top.ToolbarLayout;
import org.chromium.chrome.browser.toolbar.top.ToolbarPhone; import org.chromium.chrome.browser.toolbar.top.ToolbarPhone;
...@@ -159,7 +157,6 @@ public class CustomTabToolbar extends ToolbarLayout implements View.OnLongClickL ...@@ -159,7 +157,6 @@ public class CustomTabToolbar extends ToolbarLayout implements View.OnLongClickL
private int mState = STATE_DOMAIN_ONLY; private int mState = STATE_DOMAIN_ONLY;
private String mFirstUrl; private String mFirstUrl;
protected ToolbarDataProvider mToolbarDataProvider;
private CustomTabLocationBar mLocationBar; private CustomTabLocationBar mLocationBar;
private Runnable mTitleAnimationStarter = new Runnable() { private Runnable mTitleAnimationStarter = new Runnable() {
...@@ -191,8 +188,6 @@ public class CustomTabToolbar extends ToolbarLayout implements View.OnLongClickL ...@@ -191,8 +188,6 @@ public class CustomTabToolbar extends ToolbarLayout implements View.OnLongClickL
mLiteStatusView = findViewById(R.id.url_bar_lite_status); mLiteStatusView = findViewById(R.id.url_bar_lite_status);
mLiteStatusSeparatorView = findViewById(R.id.url_bar_lite_status_separator); mLiteStatusSeparatorView = findViewById(R.id.url_bar_lite_status_separator);
mUrlCoordinator = new UrlBarCoordinator((UrlBar) mUrlBar); mUrlCoordinator = new UrlBarCoordinator((UrlBar) mUrlBar);
mLocationBar = new CustomTabLocationBar();
mUrlCoordinator.setDelegate(mLocationBar);
mUrlCoordinator.setAllowFocus(false); mUrlCoordinator.setAllowFocus(false);
mTitleBar = findViewById(R.id.title_bar); mTitleBar = findViewById(R.id.title_bar);
mLocationBarFrameLayout = findViewById(R.id.location_bar_frame_layout); mLocationBarFrameLayout = findViewById(R.id.location_bar_frame_layout);
...@@ -207,14 +202,6 @@ public class CustomTabToolbar extends ToolbarLayout implements View.OnLongClickL ...@@ -207,14 +202,6 @@ public class CustomTabToolbar extends ToolbarLayout implements View.OnLongClickL
mSecurityButton, mTitleUrlContainer, R.dimen.location_bar_icon_width); 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 @Override
public void onNativeLibraryReady() { public void onNativeLibraryReady() {
super.onNativeLibraryReady(); super.onNativeLibraryReady();
...@@ -258,6 +245,27 @@ public class CustomTabToolbar extends ToolbarLayout implements View.OnLongClickL ...@@ -258,6 +245,27 @@ public class CustomTabToolbar extends ToolbarLayout implements View.OnLongClickL
updateCustomActionButtonVisuals(button, drawable, description); 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( private void updateCustomActionButtonVisuals(
ImageButton button, Drawable drawable, String description) { ImageButton button, Drawable drawable, String description) {
Resources resources = getResources(); Resources resources = getResources();
...@@ -389,7 +397,7 @@ public class CustomTabToolbar extends ToolbarLayout implements View.OnLongClickL ...@@ -389,7 +397,7 @@ public class CustomTabToolbar extends ToolbarLayout implements View.OnLongClickL
private void updateToolbarLayoutMargin() { private void updateToolbarLayoutMargin() {
// We show the Incognito logo for Incognito CCT case // We show the Incognito logo for Incognito CCT case
if (mToolbarDataProvider.isIncognito()) mIncognitoButton.setVisibility(VISIBLE); if (getToolbarDataProvider().isIncognito()) mIncognitoButton.setVisibility(VISIBLE);
int startMargin = calculateStartMarginWhenCloseButtonVisibilityGone(); int startMargin = calculateStartMarginWhenCloseButtonVisibilityGone();
...@@ -616,7 +624,18 @@ public class CustomTabToolbar extends ToolbarLayout implements View.OnLongClickL ...@@ -616,7 +624,18 @@ public class CustomTabToolbar extends ToolbarLayout implements View.OnLongClickL
/** /**
* Custom tab-specific implementation of the LocationBar interface. * 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 @Override
public void onNativeLibraryReady() { public void onNativeLibraryReady() {
mSecurityButton.setOnClickListener(v -> { mSecurityButton.setOnClickListener(v -> {
...@@ -756,16 +775,6 @@ public class CustomTabToolbar extends ToolbarLayout implements View.OnLongClickL ...@@ -756,16 +775,6 @@ public class CustomTabToolbar extends ToolbarLayout implements View.OnLongClickL
updateStatusIcon(); 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 @Override
public void updateVisualsForState() { public void updateVisualsForState() {
Resources resources = getResources(); Resources resources = getResources();
...@@ -824,10 +833,6 @@ public class CustomTabToolbar extends ToolbarLayout implements View.OnLongClickL ...@@ -824,10 +833,6 @@ public class CustomTabToolbar extends ToolbarLayout implements View.OnLongClickL
return mSecurityButton; return mSecurityButton;
} }
public void setDefaultTextEditActionModeCallback(ToolbarActionModeCallback callback) {
mUrlCoordinator.setActionModeCallback(callback);
}
@Override @Override
public void backKeyPressed() { public void backKeyPressed() {
assert false : "The URL bar should never take focus in CCTs."; assert false : "The URL bar should never take focus in CCTs.";
......
...@@ -47,7 +47,6 @@ import org.chromium.chrome.browser.compositor.layouts.OverviewModeBehavior; ...@@ -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.OverviewModeBehavior.OverviewModeObserver;
import org.chromium.chrome.browser.compositor.layouts.SceneChangeObserver; 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;
import org.chromium.chrome.browser.customtabs.features.toolbar.CustomTabToolbar.CustomTabLocationBar;
import org.chromium.chrome.browser.feature_engagement.TrackerFactory; import org.chromium.chrome.browser.feature_engagement.TrackerFactory;
import org.chromium.chrome.browser.findinpage.FindToolbarManager; import org.chromium.chrome.browser.findinpage.FindToolbarManager;
import org.chromium.chrome.browser.findinpage.FindToolbarObserver; import org.chromium.chrome.browser.findinpage.FindToolbarObserver;
...@@ -345,13 +344,10 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve ...@@ -345,13 +344,10 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve
mActionModeController.setTabStripHeight(mToolbar.getTabStripHeight()); mActionModeController.setTabStripHeight(mToolbar.getTabStripHeight());
if (toolbarLayout instanceof CustomTabToolbar) { if (toolbarLayout instanceof CustomTabToolbar) {
CustomTabLocationBar customTabLocationBar = CustomTabToolbar customTabToolbar = ((CustomTabToolbar) toolbarLayout);
(CustomTabLocationBar) mToolbar.getLocationBar(); mLocationBar = customTabToolbar.createLocationBar(mLocationBarModel);
// TODO(https://crbug.com/1140188): Use a factory to wire these dependencies. customTabToolbar.setDefaultTextEditActionModeCallback(
customTabLocationBar.setToolbarDataProvider(mLocationBarModel);
customTabLocationBar.setDefaultTextEditActionModeCallback(
mActionModeController.getActionModeCallback()); mActionModeController.getActionModeCallback());
mLocationBar = customTabLocationBar;
} else { } else {
LocationBarCoordinator locationBarCoordinator = new LocationBarCoordinator( LocationBarCoordinator locationBarCoordinator = new LocationBarCoordinator(
mActivity.findViewById(R.id.location_bar), profileSupplier, mLocationBarModel, 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