Commit 04d29c8b authored by Theresa's avatar Theresa Committed by Commit Bot

Create TopToolbarCoordinator and sever ToolManager/ToolbarLayout

Creates a new TopToolbarCoordinator to sit between ToolbarManager and
ToolbarLayout. TopToolbarCoordinator implements the Toolbar interface
and acts as the public message channel to other UI components.

The API surface in TopToolbarCoordinator is quite large currently.
Future CLs will attempt to slim the API surface.

BUG=897294

Change-Id: Ic16df5946f3373ecbea4a1f3e908c05086b2dbc1
Reviewed-on: https://chromium-review.googlesource.com/c/1336081
Commit-Queue: Theresa <twellington@chromium.org>
Reviewed-by: default avatarTed Choc <tedchoc@chromium.org>
Cr-Commit-Position: refs/heads/master@{#608488}
parent 90cad79a
...@@ -848,27 +848,11 @@ public class ChromeTabbedActivity ...@@ -848,27 +848,11 @@ public class ChromeTabbedActivity
mLocaleManager.showSearchEnginePromoIfNeeded(ChromeTabbedActivity.this, null); mLocaleManager.showSearchEnginePromoIfNeeded(ChromeTabbedActivity.this, null);
}; };
OnClickListener bookmarkClickHandler = v -> addOrEditBookmark(getActivityTab()); OnClickListener bookmarkClickHandler = v -> addOrEditBookmark(getActivityTab());
OnClickListener incognitoClickHandler = v -> {
Layout activeLayout = mLayoutManager.getActiveLayout();
if (!activeLayout.shouldAllowIncognitoSwitching()) return;
if (activeLayout instanceof StackLayout) {
// Without this call, tapping the incognito toggle immediately after closing a
// non-incognito tab will not work properly, because the tab closure will bring
// us back to normal mode. We need to handle the tab closure here before running
// the animation.
((StackLayout) activeLayout).commitOutstandingModelState(LayoutManager.time());
}
if (mTabModelSelectorImpl != null) {
mTabModelSelectorImpl.selectModel(!mTabModelSelectorImpl.isIncognitoSelected());
}
};
getToolbarManager().initializeWithNative(mTabModelSelectorImpl, getToolbarManager().initializeWithNative(mTabModelSelectorImpl,
getFullscreenManager().getBrowserVisibilityDelegate(), getFindToolbarManager(), getFullscreenManager().getBrowserVisibilityDelegate(), getFindToolbarManager(),
mLayoutManager, mLayoutManager, tabSwitcherClickHandler, newTabClickHandler, mLayoutManager, mLayoutManager, tabSwitcherClickHandler, newTabClickHandler,
bookmarkClickHandler, null, incognitoClickHandler); bookmarkClickHandler, null);
mLayoutManager.setToolbarManager(getToolbarManager()); mLayoutManager.setToolbarManager(getToolbarManager());
......
...@@ -594,7 +594,7 @@ public class CustomTabActivity extends ChromeActivity<CustomTabActivityComponent ...@@ -594,7 +594,7 @@ public class CustomTabActivity extends ChromeActivity<CustomTabActivityComponent
recordClientConnectionStatus(); recordClientConnectionStatus();
finishAndClose(false); finishAndClose(false);
} }
}, null); });
mBrowserSessionContentHandler = new BrowserSessionContentHandler() { mBrowserSessionContentHandler = new BrowserSessionContentHandler() {
@Override @Override
...@@ -1485,7 +1485,7 @@ public class CustomTabActivity extends ChromeActivity<CustomTabActivityComponent ...@@ -1485,7 +1485,7 @@ public class CustomTabActivity extends ChromeActivity<CustomTabActivityComponent
// The media viewer has no default menu items, so if there are also no custom items, we // The media viewer has no default menu items, so if there are also no custom items, we
// should hide the menu button altogether. // should hide the menu button altogether.
if (mIntentDataProvider.getMenuTitles().isEmpty()) { if (mIntentDataProvider.getMenuTitles().isEmpty()) {
getToolbarManager().getToolbarLayout().disableMenuButton(); getToolbarManager().getToolbar().disableMenuButton();
} }
} }
} }
......
...@@ -185,8 +185,8 @@ public class CustomTabToolbar ...@@ -185,8 +185,8 @@ public class CustomTabToolbar
} }
@Override @Override
public void initialize(ToolbarDataProvider toolbarDataProvider, void initialize(ToolbarDataProvider toolbarDataProvider, ToolbarTabController tabController,
ToolbarTabController tabController, AppMenuButtonHelper appMenuButtonHelper) { AppMenuButtonHelper appMenuButtonHelper) {
super.initialize(toolbarDataProvider, tabController, appMenuButtonHelper); super.initialize(toolbarDataProvider, tabController, appMenuButtonHelper);
updateVisualsForState(); updateVisualsForState();
} }
...@@ -205,19 +205,18 @@ public class CustomTabToolbar ...@@ -205,19 +205,18 @@ public class CustomTabToolbar
} }
@Override @Override
public void setCloseButtonImageResource(Drawable drawable) { void setCloseButtonImageResource(Drawable drawable) {
mCloseButton.setVisibility(drawable != null ? View.VISIBLE : View.GONE); mCloseButton.setVisibility(drawable != null ? View.VISIBLE : View.GONE);
mCloseButton.setImageDrawable(drawable); mCloseButton.setImageDrawable(drawable);
} }
@Override @Override
public void setCustomTabCloseClickHandler(OnClickListener listener) { void setCustomTabCloseClickHandler(OnClickListener listener) {
mCloseButton.setOnClickListener(listener); mCloseButton.setOnClickListener(listener);
} }
@Override @Override
public void addCustomActionButton( void addCustomActionButton(Drawable drawable, String description, OnClickListener listener) {
Drawable drawable, String description, OnClickListener listener) {
ImageButton button = (ImageButton) LayoutInflater.from(getContext()) ImageButton button = (ImageButton) LayoutInflater.from(getContext())
.inflate(R.layout.custom_tabs_toolbar_button, null); .inflate(R.layout.custom_tabs_toolbar_button, null);
button.setOnLongClickListener(this); button.setOnLongClickListener(this);
...@@ -231,7 +230,7 @@ public class CustomTabToolbar ...@@ -231,7 +230,7 @@ public class CustomTabToolbar
} }
@Override @Override
public void updateCustomActionButton(int index, Drawable drawable, String description) { void updateCustomActionButton(int index, Drawable drawable, String description) {
ImageButton button = (ImageButton) mCustomActionButtons.getChildAt( ImageButton button = (ImageButton) mCustomActionButtons.getChildAt(
mCustomActionButtons.getChildCount() - 1 - index); mCustomActionButtons.getChildCount() - 1 - index);
assert button != null; assert button != null;
...@@ -270,7 +269,7 @@ public class CustomTabToolbar ...@@ -270,7 +269,7 @@ public class CustomTabToolbar
} }
@Override @Override
public int getTabStripHeight() { int getTabStripHeight() {
return 0; return 0;
} }
...@@ -341,7 +340,7 @@ public class CustomTabToolbar ...@@ -341,7 +340,7 @@ public class CustomTabToolbar
} }
@Override @Override
public String getContentPublisher() { String getContentPublisher() {
Tab tab = getToolbarDataProvider().getTab(); Tab tab = getToolbarDataProvider().getTab();
if (tab == null) return null; if (tab == null) return null;
...@@ -376,7 +375,7 @@ public class CustomTabToolbar ...@@ -376,7 +375,7 @@ public class CustomTabToolbar
} }
@Override @Override
public void onNavigatedToDifferentPage() { void onNavigatedToDifferentPage() {
super.onNavigatedToDifferentPage(); super.onNavigatedToDifferentPage();
setTitleToPageTitle(); setTitleToPageTitle();
if (mState == STATE_TITLE_ONLY) { if (mState == STATE_TITLE_ONLY) {
...@@ -567,7 +566,7 @@ public class CustomTabToolbar ...@@ -567,7 +566,7 @@ public class CustomTabToolbar
* for the current tab changing. * for the current tab changing.
*/ */
@Override @Override
public void onPrimaryColorChanged(boolean shouldAnimate) { void onPrimaryColorChanged(boolean shouldAnimate) {
if (mBrandColorTransitionActive) mBrandColorTransitionAnimation.cancel(); if (mBrandColorTransitionActive) mBrandColorTransitionAnimation.cancel();
final ColorDrawable background = getBackground(); final ColorDrawable background = getBackground();
...@@ -708,7 +707,7 @@ public class CustomTabToolbar ...@@ -708,7 +707,7 @@ public class CustomTabToolbar
} }
@Override @Override
public boolean useLightDrawables() { boolean useLightDrawables() {
return !mUseDarkColors; return !mUseDarkColors;
} }
...@@ -784,27 +783,27 @@ public class CustomTabToolbar ...@@ -784,27 +783,27 @@ public class CustomTabToolbar
public void setAutocompleteProfile(Profile profile) {} public void setAutocompleteProfile(Profile profile) {}
@Override @Override
public void showAppMenuUpdateBadge() {} void showAppMenuUpdateBadge() {}
@Override @Override
public boolean isShowingAppMenuUpdateBadge() { boolean isShowingAppMenuUpdateBadge() {
return false; return false;
} }
@Override @Override
public void removeAppMenuUpdateBadge(boolean animate) {} void removeAppMenuUpdateBadge(boolean animate) {}
@Override @Override
public void setAppMenuUpdateBadgeToVisible(boolean animate) {} void setAppMenuUpdateBadgeToVisible(boolean animate) {}
@Override @Override
public View getMenuButtonWrapper() { View getMenuButtonWrapper() {
// This class has no menu button wrapper, so return the menu button instead. // This class has no menu button wrapper, so return the menu button instead.
return getMenuButton(); return getMenuButton();
} }
@Override @Override
public void disableMenuButton() { void disableMenuButton() {
super.disableMenuButton(); super.disableMenuButton();
// In addition to removing the menu button, we also need to remove the margin on the custom // In addition to removing the menu button, we also need to remove the margin on the custom
// action button. // action button.
...@@ -818,10 +817,10 @@ public class CustomTabToolbar ...@@ -818,10 +817,10 @@ public class CustomTabToolbar
// Temporary fix to override ToolbarLayout's highlight-related methods // Temporary fix to override ToolbarLayout's highlight-related methods
@Override @Override
public void setMenuButtonHighlight(boolean highlight) {} void setMenuButtonHighlight(boolean highlight) {}
@Override @Override
public void setMenuButtonHighlightDrawable(boolean highlighting) {} void setMenuButtonHighlightDrawable(boolean highlighting) {}
@Override @Override
public int getUrlContainerMarginEnd() { public int getUrlContainerMarginEnd() {
......
...@@ -6,12 +6,14 @@ package org.chromium.chrome.browser.toolbar.top; ...@@ -6,12 +6,14 @@ package org.chromium.chrome.browser.toolbar.top;
import android.graphics.Rect; import android.graphics.Rect;
import android.view.View; import android.view.View;
import android.widget.ProgressBar;
import org.chromium.chrome.browser.compositor.layouts.LayoutUpdateHost; import org.chromium.chrome.browser.widget.ToolbarProgressBar;
/** /**
* An interface for outside packages to interact with ToolbarLayout. Other than for testing purposes * An interface for outside packages to interact with the top toolbar. Other than for testing
* this interface should be used rather than {@link ToolbarLayout} and extending classes. * purposes this interface should be used rather than {@link TopToolbarCoordinator} or
* {@link ToolbarLayout} and extending classes.
*/ */
public interface Toolbar { public interface Toolbar {
/** /**
...@@ -62,13 +64,6 @@ public interface Toolbar { ...@@ -62,13 +64,6 @@ public interface Toolbar {
*/ */
boolean setForceTextureCapture(boolean forceTextureCapture); boolean setForceTextureCapture(boolean forceTextureCapture);
/**
* Sets the {@link LayoutUpdateHost} for use in requesting an update when the toolbar texture
* needs to be recaptured.
* @param layoutUpdateHost The {@link LayoutUpdateHost} for requesting updates.
*/
void setLayoutUpdateHost(LayoutUpdateHost layoutUpdateHost);
/** /**
* Sets whether or not the menu button should be highlighted. * Sets whether or not the menu button should be highlighted.
* @param highlight Whether or not the menu button should be highlighted. * @param highlight Whether or not the menu button should be highlighted.
...@@ -98,8 +93,25 @@ public interface Toolbar { ...@@ -98,8 +93,25 @@ public interface Toolbar {
void removeAppMenuUpdateBadge(boolean animate); void removeAppMenuUpdateBadge(boolean animate);
/** /**
* Returns the height of the tab strip, iff the toolbar has one. * Returns the height of the tab strip, iff the toolbar has one. Returns 0 for toolbars that do
* not have a tabstrip.
* @return height of the tab strip in px. * @return height of the tab strip in px.
*/ */
int getTabStripHeight(); int getTabStripHeight();
/**
* Disable the menu button. This removes the view from the hierarchy and nulls the related
* instance vars.
*/
void disableMenuButton();
/**
* @return The {@link ProgressBar} this layout uses.
*/
ToolbarProgressBar getProgressBar();
/**
* @return The primary color to use for the background drawable.
*/
int getPrimaryColor();
} }
...@@ -25,7 +25,6 @@ import org.chromium.chrome.browser.widget.ClipDrawableProgressBar.DrawingInfo; ...@@ -25,7 +25,6 @@ import org.chromium.chrome.browser.widget.ClipDrawableProgressBar.DrawingInfo;
import org.chromium.chrome.browser.widget.ControlContainer; import org.chromium.chrome.browser.widget.ControlContainer;
import org.chromium.chrome.browser.widget.ToolbarProgressBar; import org.chromium.chrome.browser.widget.ToolbarProgressBar;
import org.chromium.chrome.browser.widget.ViewResourceFrameLayout; import org.chromium.chrome.browser.widget.ViewResourceFrameLayout;
import org.chromium.ui.AsyncViewProvider;
import org.chromium.ui.AsyncViewStub; import org.chromium.ui.AsyncViewStub;
import org.chromium.ui.KeyboardVisibilityDelegate; import org.chromium.ui.KeyboardVisibilityDelegate;
import org.chromium.ui.base.DeviceFormFactor; import org.chromium.ui.base.DeviceFormFactor;
...@@ -72,14 +71,14 @@ public class ToolbarControlContainer extends OptimizedFrameLayout implements Con ...@@ -72,14 +71,14 @@ public class ToolbarControlContainer extends OptimizedFrameLayout implements Con
public void getProgressBarDrawingInfo(DrawingInfo drawingInfoOut) { public void getProgressBarDrawingInfo(DrawingInfo drawingInfoOut) {
if (mToolbar == null) return; if (mToolbar == null) return;
// TODO(yusufo): Avoid casting to the layout without making the interface bigger. // TODO(yusufo): Avoid casting to the layout without making the interface bigger.
ToolbarProgressBar progressBar = ((ToolbarLayout) mToolbar).getProgressBar(); ToolbarProgressBar progressBar = mToolbar.getProgressBar();
if (progressBar != null) progressBar.getDrawingInfo(drawingInfoOut); if (progressBar != null) progressBar.getDrawingInfo(drawingInfoOut);
} }
@Override @Override
public int getToolbarBackgroundColor() { public int getToolbarBackgroundColor() {
if (mToolbar == null) return 0; if (mToolbar == null) return 0;
return ((ToolbarLayout) mToolbar).getToolbarDataProvider().getPrimaryColor(); return mToolbar.getPrimaryColor();
} }
@Override @Override
...@@ -101,29 +100,32 @@ public class ToolbarControlContainer extends OptimizedFrameLayout implements Con ...@@ -101,29 +100,32 @@ public class ToolbarControlContainer extends OptimizedFrameLayout implements Con
!DeviceFormFactor.isNonMultiDisplayContextOnTablet(getContext()) !DeviceFormFactor.isNonMultiDisplayContextOnTablet(getContext())
&& FeatureUtilities.shouldInflateToolbarOnBackgroundThread()); && FeatureUtilities.shouldInflateToolbarOnBackgroundThread());
toolbarStub.inflate(); toolbarStub.inflate();
AsyncViewProvider<ToolbarLayout> toolbarProvider =
AsyncViewProvider.of(toolbarStub, R.id.toolbar);
toolbarProvider.whenLoaded(this ::onToolbarInflationComplete);
} else { } else {
ViewStub toolbarStub = (ViewStub) viewStub; ViewStub toolbarStub = (ViewStub) viewStub;
toolbarStub.setLayoutResource(toolbarLayoutId); toolbarStub.setLayoutResource(toolbarLayoutId);
toolbarStub.inflate(); toolbarStub.inflate();
onToolbarInflationComplete(findViewById(R.id.toolbar));
} }
} }
} }
private void onToolbarInflationComplete(ToolbarLayout toolbar) { /**
* @param toolbar The toolbar contained inside this control container. Should be called
* after inflation is complete.
*/
public void setToolbar(Toolbar toolbar) {
mToolbar = toolbar; mToolbar = toolbar;
mToolbarContainer.setToolbar(mToolbar); mToolbarContainer.setToolbar(mToolbar);
if (mToolbar instanceof ToolbarTablet) {
View toolbarView = findViewById(R.id.toolbar);
assert toolbarView != null;
if (toolbarView instanceof ToolbarTablet) {
// On tablet, draw a fake tab strip and toolbar until the compositor is // On tablet, draw a fake tab strip and toolbar until the compositor is
// ready to draw the real tab strip. (On phone, the toolbar is made entirely // ready to draw the real tab strip. (On phone, the toolbar is made entirely
// of Android views, which are already initialized.) // of Android views, which are already initialized.)
setBackgroundResource(R.drawable.toolbar_background); setBackgroundResource(R.drawable.toolbar_background);
} }
assert mToolbar != null;
} }
@Override @Override
......
...@@ -502,7 +502,7 @@ public class ToolbarPhone ...@@ -502,7 +502,7 @@ public class ToolbarPhone
* Sets up click and key listeners once we have native library available to handle clicks. * Sets up click and key listeners once we have native library available to handle clicks.
*/ */
@Override @Override
public void onNativeLibraryReady() { void onNativeLibraryReady() {
super.onNativeLibraryReady(); super.onNativeLibraryReady();
getLocationBar().onNativeLibraryReady(); getLocationBar().onNativeLibraryReady();
...@@ -2607,18 +2607,18 @@ public class ToolbarPhone ...@@ -2607,18 +2607,18 @@ public class ToolbarPhone
} }
@Override @Override
public boolean useLightDrawables() { boolean useLightDrawables() {
return mUseLightToolbarDrawables; return mUseLightToolbarDrawables;
} }
@Override @Override
public void setMenuButtonHighlightDrawable(boolean highlighting) { void setMenuButtonHighlightDrawable(boolean highlighting) {
highlighting &= !isTabSwitcherAnimationRunning(); highlighting &= !isTabSwitcherAnimationRunning();
super.setMenuButtonHighlightDrawable(highlighting); super.setMenuButtonHighlightDrawable(highlighting);
} }
@Override @Override
public void setTabModelSelector(TabModelSelector selector) { void setTabModelSelector(TabModelSelector selector) {
mTabModelSelector = selector; mTabModelSelector = selector;
if (mIncognitoToggleTabLayout != null) { if (mIncognitoToggleTabLayout != null) {
mIncognitoToggleTabLayout.setTabModelSelector(mTabModelSelector); mIncognitoToggleTabLayout.setTabModelSelector(mTabModelSelector);
...@@ -2626,7 +2626,7 @@ public class ToolbarPhone ...@@ -2626,7 +2626,7 @@ public class ToolbarPhone
} }
@Override @Override
public void showAppMenuUpdateBadge() { void showAppMenuUpdateBadge() {
if (getMenuBadge() == null) return; if (getMenuBadge() == null) return;
super.showAppMenuUpdateBadge(); super.showAppMenuUpdateBadge();
...@@ -2649,7 +2649,7 @@ public class ToolbarPhone ...@@ -2649,7 +2649,7 @@ public class ToolbarPhone
} }
@Override @Override
public void removeAppMenuUpdateBadge(boolean animate) { void removeAppMenuUpdateBadge(boolean animate) {
if (getMenuBadge() == null) return; if (getMenuBadge() == null) return;
super.removeAppMenuUpdateBadge(animate); super.removeAppMenuUpdateBadge(animate);
...@@ -2661,7 +2661,7 @@ public class ToolbarPhone ...@@ -2661,7 +2661,7 @@ public class ToolbarPhone
} }
@Override @Override
public void enableExperimentalButton( void enableExperimentalButton(
OnClickListener onClickListener, int drawableResId, int contentDescriptionResId) { OnClickListener onClickListener, int drawableResId, int contentDescriptionResId) {
if (mExperimentalButton == null) { if (mExperimentalButton == null) {
ViewStub viewStub = findViewById(R.id.experimental_button_stub); ViewStub viewStub = findViewById(R.id.experimental_button_stub);
...@@ -2701,12 +2701,12 @@ public class ToolbarPhone ...@@ -2701,12 +2701,12 @@ public class ToolbarPhone
} }
@Override @Override
public View getExperimentalButtonView() { View getExperimentalButtonView() {
return mExperimentalButton; return mExperimentalButton;
} }
@Override @Override
public void disableExperimentalButton() { void disableExperimentalButton() {
if (mExperimentalButton == null || mExperimentalButton.getVisibility() == View.GONE) { if (mExperimentalButton == null || mExperimentalButton.getVisibility() == View.GONE) {
return; return;
} }
......
...@@ -376,12 +376,12 @@ public class ToolbarTablet extends ToolbarLayout ...@@ -376,12 +376,12 @@ public class ToolbarTablet extends ToolbarLayout
} }
@Override @Override
public boolean isReadyForTextureCapture() { boolean isReadyForTextureCapture() {
return !urlHasFocus(); return !urlHasFocus();
} }
@Override @Override
public void onTabOrModelChanged() { void onTabOrModelChanged() {
super.onTabOrModelChanged(); super.onTabOrModelChanged();
boolean incognito = isIncognito(); boolean incognito = isIncognito();
if (mUseLightColorAssets == null || mUseLightColorAssets != incognito) { if (mUseLightColorAssets == null || mUseLightColorAssets != incognito) {
...@@ -443,13 +443,13 @@ public class ToolbarTablet extends ToolbarLayout ...@@ -443,13 +443,13 @@ public class ToolbarTablet extends ToolbarLayout
} }
@Override @Override
public void onTabContentViewChanged() { void onTabContentViewChanged() {
super.onTabContentViewChanged(); super.onTabContentViewChanged();
updateNtp(); updateNtp();
} }
@Override @Override
public void updateButtonVisibility() { void updateButtonVisibility() {
if (FeatureUtilities.isNewTabPageButtonEnabled()) { if (FeatureUtilities.isNewTabPageButtonEnabled()) {
mHomeButton.setVisibility(isIncognito() ? GONE : VISIBLE); mHomeButton.setVisibility(isIncognito() ? GONE : VISIBLE);
} }
...@@ -457,21 +457,21 @@ public class ToolbarTablet extends ToolbarLayout ...@@ -457,21 +457,21 @@ public class ToolbarTablet extends ToolbarLayout
} }
@Override @Override
public void updateBackButtonVisibility(boolean canGoBack) { void updateBackButtonVisibility(boolean canGoBack) {
boolean enableButton = canGoBack && !mIsInTabSwitcherMode; boolean enableButton = canGoBack && !mIsInTabSwitcherMode;
mBackButton.setEnabled(enableButton); mBackButton.setEnabled(enableButton);
mBackButton.setFocusable(enableButton); mBackButton.setFocusable(enableButton);
} }
@Override @Override
public void updateForwardButtonVisibility(boolean canGoForward) { void updateForwardButtonVisibility(boolean canGoForward) {
boolean enableButton = canGoForward && !mIsInTabSwitcherMode; boolean enableButton = canGoForward && !mIsInTabSwitcherMode;
mForwardButton.setEnabled(enableButton); mForwardButton.setEnabled(enableButton);
mForwardButton.setFocusable(enableButton); mForwardButton.setFocusable(enableButton);
} }
@Override @Override
public void updateReloadButtonVisibility(boolean isReloading) { void updateReloadButtonVisibility(boolean isReloading) {
if (isReloading) { if (isReloading) {
mReloadButton.getDrawable().setLevel( mReloadButton.getDrawable().setLevel(
getResources().getInteger(R.integer.reload_button_level_stop)); getResources().getInteger(R.integer.reload_button_level_stop));
...@@ -489,7 +489,7 @@ public class ToolbarTablet extends ToolbarLayout ...@@ -489,7 +489,7 @@ public class ToolbarTablet extends ToolbarLayout
} }
@Override @Override
public void updateBookmarkButton(boolean isBookmarked, boolean editingAllowed) { void updateBookmarkButton(boolean isBookmarked, boolean editingAllowed) {
if (isBookmarked) { if (isBookmarked) {
mBookmarkButton.setImageResource(R.drawable.btn_star_filled); mBookmarkButton.setImageResource(R.drawable.btn_star_filled);
// Non-incognito mode shows a blue filled star. // Non-incognito mode shows a blue filled star.
...@@ -509,7 +509,7 @@ public class ToolbarTablet extends ToolbarLayout ...@@ -509,7 +509,7 @@ public class ToolbarTablet extends ToolbarLayout
} }
@Override @Override
public void setTabSwitcherMode( void setTabSwitcherMode(
boolean inTabSwitcherMode, boolean showToolbar, boolean delayAnimation) { boolean inTabSwitcherMode, boolean showToolbar, boolean delayAnimation) {
if (mShowTabStack && inTabSwitcherMode) { if (mShowTabStack && inTabSwitcherMode) {
mIsInTabSwitcherMode = true; mIsInTabSwitcherMode = true;
...@@ -541,12 +541,12 @@ public class ToolbarTablet extends ToolbarLayout ...@@ -541,12 +541,12 @@ public class ToolbarTablet extends ToolbarLayout
} }
@Override @Override
public void setTabCountProvider(TabCountProvider tabCountProvider) { void setTabCountProvider(TabCountProvider tabCountProvider) {
tabCountProvider.addObserver(this); tabCountProvider.addObserver(this);
} }
@Override @Override
public void onAccessibilityStatusChanged(boolean enabled) { void onAccessibilityStatusChanged(boolean enabled) {
// If Memex is enabled, don't allow the accessibility tab switcher button to be disabled. // If Memex is enabled, don't allow the accessibility tab switcher button to be disabled.
if (!enabled && ChromeFeatureList.isInitialized() if (!enabled && ChromeFeatureList.isInitialized()
&& ChromeFeatureList.isEnabled(ChromeFeatureList.CHROME_MEMEX)) { && ChromeFeatureList.isEnabled(ChromeFeatureList.CHROME_MEMEX)) {
...@@ -557,17 +557,17 @@ public class ToolbarTablet extends ToolbarLayout ...@@ -557,17 +557,17 @@ public class ToolbarTablet extends ToolbarLayout
} }
@Override @Override
public void setBookmarkClickHandler(OnClickListener listener) { void setBookmarkClickHandler(OnClickListener listener) {
mBookmarkListener = listener; mBookmarkListener = listener;
} }
@Override @Override
public void setOnTabSwitcherClickHandler(OnClickListener listener) { void setOnTabSwitcherClickHandler(OnClickListener listener) {
mTabSwitcherListener = listener; mTabSwitcherListener = listener;
} }
@Override @Override
public void onHomeButtonUpdate(boolean homeButtonEnabled) { void onHomeButtonUpdate(boolean homeButtonEnabled) {
mHomeButton.setVisibility(homeButtonEnabled ? VISIBLE : GONE); mHomeButton.setVisibility(homeButtonEnabled ? VISIBLE : GONE);
} }
...@@ -577,12 +577,12 @@ public class ToolbarTablet extends ToolbarLayout ...@@ -577,12 +577,12 @@ public class ToolbarTablet extends ToolbarLayout
} }
@Override @Override
public boolean useLightDrawables() { boolean useLightDrawables() {
return mUseLightColorAssets != null && mUseLightColorAssets; return mUseLightColorAssets != null && mUseLightColorAssets;
} }
@Override @Override
public void showAppMenuUpdateBadge() { void showAppMenuUpdateBadge() {
super.showAppMenuUpdateBadge(); super.showAppMenuUpdateBadge();
if (!mIsInTabSwitcherMode) { if (!mIsInTabSwitcherMode) {
if (mUseLightColorAssets != null && mUseLightColorAssets) { if (mUseLightColorAssets != null && mUseLightColorAssets) {
......
...@@ -294,7 +294,7 @@ public class WebappActivity extends SingleTabActivity { ...@@ -294,7 +294,7 @@ public class WebappActivity extends SingleTabActivity {
(ToolbarControlContainer) findViewById(R.id.control_container)); (ToolbarControlContainer) findViewById(R.id.control_container));
getToolbarManager().initializeWithNative(getTabModelSelector(), getToolbarManager().initializeWithNative(getTabModelSelector(),
getFullscreenManager().getBrowserVisibilityDelegate(), getFindToolbarManager(), getFullscreenManager().getBrowserVisibilityDelegate(), getFindToolbarManager(),
null, layoutDriver, null, null, null, view -> onToolbarCloseButtonClicked(), null); null, layoutDriver, null, null, null, view -> onToolbarCloseButtonClicked());
getToolbarManager().setShowTitle(true); getToolbarManager().setShowTitle(true);
getToolbarManager().setCloseButtonDrawable(null); // Hides close button. getToolbarManager().setCloseButtonDrawable(null); // Hides close button.
...@@ -717,7 +717,7 @@ public class WebappActivity extends SingleTabActivity { ...@@ -717,7 +717,7 @@ public class WebappActivity extends SingleTabActivity {
getToolbarManager().setCloseButtonDrawable( getToolbarManager().setCloseButtonDrawable(
TintedDrawable.constructTintedDrawable(this, R.drawable.btn_close)); TintedDrawable.constructTintedDrawable(this, R.drawable.btn_close));
// Applies light or dark tint to icons depending on the theme color. // Applies light or dark tint to icons depending on the theme color.
getToolbarManager().getToolbarLayout().getLocationBar().updateVisualsForState(); getToolbarManager().updateLocationBarVisualsForState();
} else { } else {
getToolbarManager().setCloseButtonDrawable(null); getToolbarManager().setCloseButtonDrawable(null);
} }
......
...@@ -1608,6 +1608,7 @@ chrome_java_sources = [ ...@@ -1608,6 +1608,7 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/toolbar/top/ToolbarLayout.java", "java/src/org/chromium/chrome/browser/toolbar/top/ToolbarLayout.java",
"java/src/org/chromium/chrome/browser/toolbar/top/ToolbarPhone.java", "java/src/org/chromium/chrome/browser/toolbar/top/ToolbarPhone.java",
"java/src/org/chromium/chrome/browser/toolbar/top/ToolbarTablet.java", "java/src/org/chromium/chrome/browser/toolbar/top/ToolbarTablet.java",
"java/src/org/chromium/chrome/browser/toolbar/top/TopToolbarCoordinator.java",
"java/src/org/chromium/chrome/browser/toolbar/top/ViewShiftingActionBarDelegate.java", "java/src/org/chromium/chrome/browser/toolbar/top/ViewShiftingActionBarDelegate.java",
"java/src/org/chromium/chrome/browser/tracing/TracingController.java", "java/src/org/chromium/chrome/browser/tracing/TracingController.java",
"java/src/org/chromium/chrome/browser/tracing/TracingNotificationManager.java", "java/src/org/chromium/chrome/browser/tracing/TracingNotificationManager.java",
......
...@@ -311,7 +311,9 @@ public class NavigationPopupTest { ...@@ -311,7 +311,9 @@ public class NavigationPopupTest {
return ThreadUtils.runOnUiThreadBlocking(() -> { return ThreadUtils.runOnUiThreadBlocking(() -> {
NavigationPopup popup = new NavigationPopup(mProfile, mActivityTestRule.getActivity(), NavigationPopup popup = new NavigationPopup(mProfile, mActivityTestRule.getActivity(),
controller, NavigationPopup.Type.TABLET_FORWARD); controller, NavigationPopup.Type.TABLET_FORWARD);
popup.show(mActivityTestRule.getActivity().getToolbarManager().getToolbarLayout()); popup.show(mActivityTestRule.getActivity()
.getToolbarManager()
.getToolbarLayoutForTesting());
return popup.getPopupForTesting(); return popup.getPopupForTesting();
}); });
} }
......
...@@ -687,6 +687,6 @@ public class ContextualSuggestionsTest { ...@@ -687,6 +687,6 @@ public class ContextualSuggestionsTest {
} }
private ToolbarPhone getToolbarPhone(ChromeActivity activity) { private ToolbarPhone getToolbarPhone(ChromeActivity activity) {
return (ToolbarPhone) activity.getToolbarManager().getToolbarLayout(); return (ToolbarPhone) activity.getToolbarManager().getToolbarLayoutForTesting();
} }
} }
...@@ -84,8 +84,10 @@ public class ModalDialogManagerTest { ...@@ -84,8 +84,10 @@ public class ModalDialogManagerTest {
mModalDialogViews = new ModalDialogView[MAX_DIALOGS]; mModalDialogViews = new ModalDialogView[MAX_DIALOGS];
for (int i = 0; i < MAX_DIALOGS; i++) mModalDialogViews[i] = createDialog(i); for (int i = 0; i < MAX_DIALOGS; i++) mModalDialogViews[i] = createDialog(i);
mTestObserver = new TestObserver(); mTestObserver = new TestObserver();
mActivity.getToolbarManager().getToolbarLayout().getLocationBar().addUrlFocusChangeListener( mActivity.getToolbarManager()
mTestObserver); .getToolbarLayoutForTesting()
.getLocationBar()
.addUrlFocusChangeListener(mTestObserver);
TabModalPresenter presenter = TabModalPresenter presenter =
(TabModalPresenter) mManager.getPresenterForTest(ModalDialogType.TAB); (TabModalPresenter) mManager.getPresenterForTest(ModalDialogType.TAB);
presenter.disableAnimationForTest(); presenter.disableAnimationForTest();
......
...@@ -44,7 +44,7 @@ public class WebappDisplayModeTest { ...@@ -44,7 +44,7 @@ public class WebappDisplayModeTest {
public void testStandalone() throws Exception { public void testStandalone() throws Exception {
WebappActivity activity = startActivity(WebDisplayMode.STANDALONE); WebappActivity activity = startActivity(WebDisplayMode.STANDALONE);
Assert.assertFalse(activity.getToolbarManager().getToolbarLayout().isShown()); Assert.assertFalse(activity.getToolbarManager().getToolbarLayoutForTesting().isShown());
Assert.assertFalse(isFullscreen(activity)); Assert.assertFalse(isFullscreen(activity));
} }
...@@ -55,7 +55,7 @@ public class WebappDisplayModeTest { ...@@ -55,7 +55,7 @@ public class WebappDisplayModeTest {
public void testFullScreen() throws Exception { public void testFullScreen() throws Exception {
WebappActivity activity = startActivity(WebDisplayMode.FULLSCREEN); WebappActivity activity = startActivity(WebDisplayMode.FULLSCREEN);
Assert.assertFalse(activity.getToolbarManager().getToolbarLayout().isShown()); Assert.assertFalse(activity.getToolbarManager().getToolbarLayoutForTesting().isShown());
Assert.assertTrue(isFullscreen(activity)); Assert.assertTrue(isFullscreen(activity));
} }
...@@ -66,7 +66,7 @@ public class WebappDisplayModeTest { ...@@ -66,7 +66,7 @@ public class WebappDisplayModeTest {
WebappActivity activity = startActivity(WebDisplayMode.MINIMAL_UI); WebappActivity activity = startActivity(WebDisplayMode.MINIMAL_UI);
Assert.assertFalse(isFullscreen(activity)); Assert.assertFalse(isFullscreen(activity));
Assert.assertTrue(activity.getToolbarManager().getToolbarLayout().isShown()); Assert.assertTrue(activity.getToolbarManager().getToolbarLayoutForTesting().isShown());
Assert.assertEquals(Color.CYAN, activity.getToolbarManager().getPrimaryColor()); Assert.assertEquals(Color.CYAN, activity.getToolbarManager().getPrimaryColor());
Assert.assertEquals("Web App title should be displayed on the title bar", Assert.assertEquals("Web App title should be displayed on the title bar",
......
...@@ -361,8 +361,11 @@ public class WebappNavigationTest { ...@@ -361,8 +361,11 @@ public class WebappNavigationTest {
WebappActivityTestRule.assertToolbarShowState(activity, true); WebappActivityTestRule.assertToolbarShowState(activity, true);
// Navigate back to in-scope through a close button. // Navigate back to in-scope through a close button.
ThreadUtils.runOnUiThreadBlocking(() -> activity.getToolbarManager() ThreadUtils.runOnUiThreadBlocking(()
.getToolbarLayout().findViewById(R.id.close_button).callOnClick()); -> activity.getToolbarManager()
.getToolbarLayoutForTesting()
.findViewById(R.id.close_button)
.callOnClick());
// We should end up on most recent in-scope URL. // We should end up on most recent in-scope URL.
ChromeTabUtils.waitForTabPageLoaded(tab, otherInScopeUrl); ChromeTabUtils.waitForTabPageLoaded(tab, otherInScopeUrl);
...@@ -398,10 +401,11 @@ public class WebappNavigationTest { ...@@ -398,10 +401,11 @@ public class WebappNavigationTest {
// Close the Minimal UI. // Close the Minimal UI.
WebappActivityTestRule.assertToolbarShowState(activity, true); WebappActivityTestRule.assertToolbarShowState(activity, true);
ThreadUtils.runOnUiThreadBlocking(() -> activity.getToolbarManager() ThreadUtils.runOnUiThreadBlocking(()
.getToolbarLayout() -> activity.getToolbarManager()
.findViewById(R.id.close_button) .getToolbarLayoutForTesting()
.callOnClick()); .findViewById(R.id.close_button)
.callOnClick());
// The WebappActivity should be navigated to the page prior to the redirect. // The WebappActivity should be navigated to the page prior to the redirect.
ChromeTabUtils.waitForTabPageLoaded(activity.getActivityTab(), initialInScopeUrl); ChromeTabUtils.waitForTabPageLoaded(activity.getActivityTab(), initialInScopeUrl);
......
...@@ -60,10 +60,8 @@ public class ToolbarProgressBarTest { ...@@ -60,10 +60,8 @@ public class ToolbarProgressBarTest {
@Before @Before
public void setUp() throws InterruptedException, TimeoutException { public void setUp() throws InterruptedException, TimeoutException {
mActivityTestRule.startMainActivityOnBlankPage(); mActivityTestRule.startMainActivityOnBlankPage();
mProgressBar = mActivityTestRule.getActivity() mProgressBar =
.getToolbarManager() mActivityTestRule.getActivity().getToolbarManager().getToolbar().getProgressBar();
.getToolbarLayout()
.getProgressBar();
mProgressBar.resetStartCountForTesting(); mProgressBar.resetStartCountForTesting();
......
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