Commit cb2e0579 authored by Pedro Amaral's avatar Pedro Amaral Committed by Commit Bot

Moving incognito toggle button down to bottom toolbar

Moved the incognito toggle button to the bottom toolbar and removed
the new tab button and incognito toggle button from the top toolbar.

Bug: 847639

Change-Id: I1a8c081251f2058f74ec7ad9b76865758fe136e4
Reviewed-on: https://chromium-review.googlesource.com/1152541
Commit-Queue: Pedro Amaral <amaralp@chromium.org>
Reviewed-by: default avatarTed Choc <tedchoc@chromium.org>
Cr-Commit-Position: refs/heads/master@{#578791}
parent 8c35e22c
...@@ -43,8 +43,7 @@ ...@@ -43,8 +43,7 @@
<org.chromium.chrome.browser.widget.TintedImageButton <org.chromium.chrome.browser.widget.TintedImageButton
android:id="@+id/first_button" android:id="@+id/first_button"
style="@style/ToolbarButton" style="@style/ToolbarButton"
android:layout_gravity="center" android:layout_gravity="center" />
app:chrometint="@color/dark_mode_tint" />
<Space <Space
android:layout_width="0dp" android:layout_width="0dp"
...@@ -54,8 +53,7 @@ ...@@ -54,8 +53,7 @@
<org.chromium.chrome.browser.widget.TintedImageButton <org.chromium.chrome.browser.widget.TintedImageButton
android:id="@+id/second_button" android:id="@+id/second_button"
style="@style/ToolbarButton" style="@style/ToolbarButton"
android:layout_gravity="center" android:layout_gravity="center" />
app:chrometint="@color/dark_mode_tint" />
<Space <Space
android:layout_width="0dp" android:layout_width="0dp"
......
...@@ -20,6 +20,7 @@ import org.chromium.chrome.browser.modelutil.PropertyKey; ...@@ -20,6 +20,7 @@ import org.chromium.chrome.browser.modelutil.PropertyKey;
import org.chromium.chrome.browser.modelutil.PropertyModelChangeProcessor; import org.chromium.chrome.browser.modelutil.PropertyModelChangeProcessor;
import org.chromium.chrome.browser.tabmodel.TabModelSelector; import org.chromium.chrome.browser.tabmodel.TabModelSelector;
import org.chromium.chrome.browser.toolbar.BottomToolbarViewBinder.ViewHolder; import org.chromium.chrome.browser.toolbar.BottomToolbarViewBinder.ViewHolder;
import org.chromium.chrome.browser.toolbar.ToolbarButtonSlotData.ToolbarButtonData;
import org.chromium.ui.base.WindowAndroid; import org.chromium.ui.base.WindowAndroid;
import org.chromium.ui.resources.ResourceManager; import org.chromium.ui.resources.ResourceManager;
...@@ -88,17 +89,25 @@ public class BottomToolbarCoordinator { ...@@ -88,17 +89,25 @@ public class BottomToolbarCoordinator {
* @param overviewModeBehavior The overview mode manager. * @param overviewModeBehavior The overview mode manager.
* @param contextualSearchManager The manager for Contextual Search to handle interactions when * @param contextualSearchManager The manager for Contextual Search to handle interactions when
* that feature is visible. * that feature is visible.
* @param firstSlotTabSwitcherButtonData The button to be shown in the first slot when in tab
* switcher mode.
* @param secondSlotTabSwitcherButtonData The button to be shown in the second slot when in tab
* switcher mode.
*/ */
public void initializeWithNative(ResourceManager resourceManager, LayoutManager layoutManager, public void initializeWithNative(ResourceManager resourceManager, LayoutManager layoutManager,
OnClickListener tabSwitcherListener, OnTouchListener menuButtonListener, OnClickListener tabSwitcherListener, OnTouchListener menuButtonListener,
TabModelSelector tabModelSelector, OverviewModeBehavior overviewModeBehavior, TabModelSelector tabModelSelector, OverviewModeBehavior overviewModeBehavior,
ContextualSearchManager contextualSearchManager, WindowAndroid windowAndroid) { ContextualSearchManager contextualSearchManager, WindowAndroid windowAndroid,
ToolbarButtonData firstSlotTabSwitcherButtonData,
ToolbarButtonData secondSlotTabSwitcherButtonData) {
mMediator.setLayoutManager(layoutManager); mMediator.setLayoutManager(layoutManager);
mMediator.setResourceManager(resourceManager); mMediator.setResourceManager(resourceManager);
mMediator.setOverviewModeBehavior(overviewModeBehavior); mMediator.setOverviewModeBehavior(overviewModeBehavior);
mMediator.setToolbarSwipeHandler(layoutManager.getToolbarSwipeHandler()); mMediator.setToolbarSwipeHandler(layoutManager.getToolbarSwipeHandler());
mMediator.setContextualSearchManager(contextualSearchManager); mMediator.setContextualSearchManager(contextualSearchManager);
mMediator.setWindowAndroid(windowAndroid); mMediator.setWindowAndroid(windowAndroid);
mMediator.setTabSwitcherButtonData(
firstSlotTabSwitcherButtonData, secondSlotTabSwitcherButtonData);
mTabSwitcherButtonCoordinator.setTabSwitcherListener(tabSwitcherListener); mTabSwitcherButtonCoordinator.setTabSwitcherListener(tabSwitcherListener);
mTabSwitcherButtonCoordinator.setTabModelSelector(tabModelSelector); mTabSwitcherButtonCoordinator.setTabModelSelector(tabModelSelector);
......
...@@ -19,6 +19,7 @@ import org.chromium.chrome.browser.contextualsearch.ContextualSearchObserver; ...@@ -19,6 +19,7 @@ import org.chromium.chrome.browser.contextualsearch.ContextualSearchObserver;
import org.chromium.chrome.browser.fullscreen.ChromeFullscreenManager; import org.chromium.chrome.browser.fullscreen.ChromeFullscreenManager;
import org.chromium.chrome.browser.fullscreen.ChromeFullscreenManager.FullscreenListener; import org.chromium.chrome.browser.fullscreen.ChromeFullscreenManager.FullscreenListener;
import org.chromium.chrome.browser.gsa.GSAContextDisplaySelection; import org.chromium.chrome.browser.gsa.GSAContextDisplaySelection;
import org.chromium.chrome.browser.toolbar.ToolbarButtonSlotData.ToolbarButtonData;
import org.chromium.ui.base.WindowAndroid; import org.chromium.ui.base.WindowAndroid;
import org.chromium.ui.base.WindowAndroid.KeyboardVisibilityListener; import org.chromium.ui.base.WindowAndroid.KeyboardVisibilityListener;
import org.chromium.ui.resources.ResourceManager; import org.chromium.ui.resources.ResourceManager;
...@@ -225,4 +226,17 @@ class BottomToolbarMediator implements ContextualSearchObserver, FullscreenListe ...@@ -225,4 +226,17 @@ class BottomToolbarMediator implements ContextualSearchObserver, FullscreenListe
mWindowAndroid = windowAndroid; mWindowAndroid = windowAndroid;
mWindowAndroid.addKeyboardVisibilityListener(this); mWindowAndroid.addKeyboardVisibilityListener(this);
} }
void setTabSwitcherButtonData(
ToolbarButtonData firstSlotButtonData, ToolbarButtonData secondSlotButtonData) {
mFirstSlotData.tabSwitcherModeButtonData = firstSlotButtonData;
mSecondSlotData.tabSwitcherModeButtonData = secondSlotButtonData;
if (mOverviewModeBehavior.overviewVisible()) {
mModel.setValue(
BottomToolbarModel.FIRST_BUTTON_DATA, mFirstSlotData.tabSwitcherModeButtonData);
mModel.setValue(BottomToolbarModel.SECOND_BUTTON_DATA,
mSecondSlotData.tabSwitcherModeButtonData);
}
}
} }
...@@ -5,9 +5,10 @@ ...@@ -5,9 +5,10 @@
package org.chromium.chrome.browser.toolbar; package org.chromium.chrome.browser.toolbar;
import android.content.Context; import android.content.Context;
import android.support.v4.content.ContextCompat;
import android.view.View.OnClickListener; import android.view.View.OnClickListener;
import org.chromium.chrome.browser.widget.TintedDrawable; import org.chromium.chrome.R;
import org.chromium.chrome.browser.widget.TintedImageButton; import org.chromium.chrome.browser.widget.TintedImageButton;
/** /**
...@@ -18,16 +19,14 @@ class ToolbarButtonSlotData { ...@@ -18,16 +19,14 @@ class ToolbarButtonSlotData {
public final ToolbarButtonData browsingModeButtonData; public final ToolbarButtonData browsingModeButtonData;
/** The button to be shown when in tab switcher mode. */ /** The button to be shown when in tab switcher mode. */
public final ToolbarButtonData tabSwitcherModeButtonData; public ToolbarButtonData tabSwitcherModeButtonData;
/** /**
* @param browsingModeButton The button to be shown when in browsing mode. * @param browsingModeButton The button to be shown when in browsing mode.
* @param tabSwitcherModeButton The button to be shown when in tab switcher mode. * @param tabSwitcherModeButton The button to be shown when in tab switcher mode.
*/ */
ToolbarButtonSlotData( ToolbarButtonSlotData(ToolbarButtonData browsingModeButton) {
ToolbarButtonData browsingModeButton, ToolbarButtonData tabSwitcherModeButton) {
browsingModeButtonData = browsingModeButton; browsingModeButtonData = browsingModeButton;
tabSwitcherModeButtonData = tabSwitcherModeButton;
} }
/** /**
...@@ -35,23 +34,27 @@ class ToolbarButtonSlotData { ...@@ -35,23 +34,27 @@ class ToolbarButtonSlotData {
* buttons when entering or leaving tab switching mode. * buttons when entering or leaving tab switching mode.
*/ */
static class ToolbarButtonData { static class ToolbarButtonData {
private final TintedDrawable mTintedDrawable; private final int mDrawableResId;
// TODO(amaralp): Add incognito accessibility string.
private final CharSequence mAccessibilityStringResId; private final CharSequence mAccessibilityStringResId;
private final OnClickListener mOnClickListener; private final OnClickListener mOnClickListener;
private final boolean mShouldTint;
/** /**
* @param tintedDrawableResId The drawable's resource id. * @param drawableResId The drawable's resource id.
* @param accessibilityStringResId The accessibility's resource id. * @param accessibilityStringResId The accessibility's resource id.
* @param onClickListener An {@link OnClickListener} that is triggered when this button is * @param onClickListener An {@link OnClickListener} that is triggered when this button is
* clicked. * clicked.
* @param shouldTint Whether the button should be tinted.
* @param context The {@link Context} used to get the drawable and accessibility string * @param context The {@link Context} used to get the drawable and accessibility string
* resources. * resources.
*/ */
ToolbarButtonData(int tintedDrawableResId, int accessibilityStringResId, ToolbarButtonData(int drawableResId, int accessibilityStringResId,
OnClickListener onClickListener, Context context) { OnClickListener onClickListener, boolean shouldTint, Context context) {
mTintedDrawable = TintedDrawable.constructTintedDrawable(context, tintedDrawableResId);
mAccessibilityStringResId = context.getString(accessibilityStringResId); mAccessibilityStringResId = context.getString(accessibilityStringResId);
mOnClickListener = onClickListener; mOnClickListener = onClickListener;
mDrawableResId = drawableResId;
mShouldTint = shouldTint;
} }
/** /**
...@@ -59,8 +62,14 @@ class ToolbarButtonSlotData { ...@@ -59,8 +62,14 @@ class ToolbarButtonSlotData {
*/ */
void updateButton(TintedImageButton imageButton) { void updateButton(TintedImageButton imageButton) {
imageButton.setOnClickListener(mOnClickListener); imageButton.setOnClickListener(mOnClickListener);
imageButton.setImageDrawable(mTintedDrawable); imageButton.setImageResource(mDrawableResId);
imageButton.setContentDescription(mAccessibilityStringResId); imageButton.setContentDescription(mAccessibilityStringResId);
if (mShouldTint) {
imageButton.setImageTintList(ContextCompat.getColorStateList(
imageButton.getContext(), R.color.dark_mode_tint));
} else {
imageButton.setImageTintList(null);
}
} }
} }
} }
...@@ -29,6 +29,7 @@ import org.chromium.base.metrics.RecordHistogram; ...@@ -29,6 +29,7 @@ import org.chromium.base.metrics.RecordHistogram;
import org.chromium.base.metrics.RecordUserAction; import org.chromium.base.metrics.RecordUserAction;
import org.chromium.chrome.R; import org.chromium.chrome.R;
import org.chromium.chrome.browser.ChromeActivity; import org.chromium.chrome.browser.ChromeActivity;
import org.chromium.chrome.browser.ChromeFeatureList;
import org.chromium.chrome.browser.ChromeTabbedActivity; import org.chromium.chrome.browser.ChromeTabbedActivity;
import org.chromium.chrome.browser.NativePage; import org.chromium.chrome.browser.NativePage;
import org.chromium.chrome.browser.TabLoadStatus; import org.chromium.chrome.browser.TabLoadStatus;
...@@ -46,6 +47,7 @@ import org.chromium.chrome.browser.compositor.layouts.LayoutManager; ...@@ -46,6 +47,7 @@ import org.chromium.chrome.browser.compositor.layouts.LayoutManager;
import org.chromium.chrome.browser.compositor.layouts.OverviewModeBehavior; 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.device.DeviceClassManager;
import org.chromium.chrome.browser.download.DownloadUtils; import org.chromium.chrome.browser.download.DownloadUtils;
import org.chromium.chrome.browser.feature_engagement.TrackerFactory; import org.chromium.chrome.browser.feature_engagement.TrackerFactory;
import org.chromium.chrome.browser.fullscreen.BrowserStateBrowserControlsVisibilityDelegate; import org.chromium.chrome.browser.fullscreen.BrowserStateBrowserControlsVisibilityDelegate;
...@@ -62,6 +64,7 @@ import org.chromium.chrome.browser.omnibox.UrlFocusChangeListener; ...@@ -62,6 +64,7 @@ import org.chromium.chrome.browser.omnibox.UrlFocusChangeListener;
import org.chromium.chrome.browser.partnercustomizations.HomepageManager; import org.chromium.chrome.browser.partnercustomizations.HomepageManager;
import org.chromium.chrome.browser.partnercustomizations.HomepageManager.HomepageStateListener; import org.chromium.chrome.browser.partnercustomizations.HomepageManager.HomepageStateListener;
import org.chromium.chrome.browser.preferences.ChromePreferenceManager; import org.chromium.chrome.browser.preferences.ChromePreferenceManager;
import org.chromium.chrome.browser.preferences.PrefServiceBridge;
import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.search_engines.TemplateUrl; import org.chromium.chrome.browser.search_engines.TemplateUrl;
import org.chromium.chrome.browser.search_engines.TemplateUrlService; import org.chromium.chrome.browser.search_engines.TemplateUrlService;
...@@ -78,6 +81,7 @@ import org.chromium.chrome.browser.tabmodel.TabModelObserver; ...@@ -78,6 +81,7 @@ import org.chromium.chrome.browser.tabmodel.TabModelObserver;
import org.chromium.chrome.browser.tabmodel.TabModelSelector; import org.chromium.chrome.browser.tabmodel.TabModelSelector;
import org.chromium.chrome.browser.tabmodel.TabModelSelectorObserver; import org.chromium.chrome.browser.tabmodel.TabModelSelectorObserver;
import org.chromium.chrome.browser.toolbar.ActionModeController.ActionBarDelegate; import org.chromium.chrome.browser.toolbar.ActionModeController.ActionBarDelegate;
import org.chromium.chrome.browser.toolbar.ToolbarButtonSlotData.ToolbarButtonData;
import org.chromium.chrome.browser.util.ColorUtils; import org.chromium.chrome.browser.util.ColorUtils;
import org.chromium.chrome.browser.util.FeatureUtilities; import org.chromium.chrome.browser.util.FeatureUtilities;
import org.chromium.chrome.browser.widget.ViewHighlighter; import org.chromium.chrome.browser.widget.ViewHighlighter;
...@@ -153,7 +157,6 @@ public class ToolbarManager implements ToolbarTabController, UrlFocusChangeListe ...@@ -153,7 +157,6 @@ public class ToolbarManager implements ToolbarTabController, UrlFocusChangeListe
private final ToolbarControlContainer mControlContainer; private final ToolbarControlContainer mControlContainer;
private BottomToolbarCoordinator mBottomToolbarCoordinator; private BottomToolbarCoordinator mBottomToolbarCoordinator;
private OnClickListener mNewTabButtonOnClickListener;
private TabModelSelector mTabModelSelector; private TabModelSelector mTabModelSelector;
private TabModelSelectorObserver mTabModelSelectorObserver; private TabModelSelectorObserver mTabModelSelectorObserver;
private TabModelObserver mTabModelObserver; private TabModelObserver mTabModelObserver;
...@@ -638,11 +641,10 @@ public class ToolbarManager implements ToolbarTabController, UrlFocusChangeListe ...@@ -638,11 +641,10 @@ public class ToolbarManager implements ToolbarTabController, UrlFocusChangeListe
*/ */
public void enableBottomToolbar() { public void enableBottomToolbar() {
if (FeatureUtilities.isBottomToolbarEnabled()) { if (FeatureUtilities.isBottomToolbarEnabled()) {
final Context context = mActivity.getBaseContext(); final ToolbarButtonSlotData firstButtonSlot =
final ToolbarButtonSlotData firstButtonSlot = new ToolbarButtonSlotData( new ToolbarButtonSlotData(createHomeButton(mActivity));
createHomeButton(context), createNewTabButton(context));
final ToolbarButtonSlotData secondButtonSlot = final ToolbarButtonSlotData secondButtonSlot =
new ToolbarButtonSlotData(createSearchAccelerator(context), null); new ToolbarButtonSlotData(createSearchAccelerator(mActivity));
mBottomToolbarCoordinator = new BottomToolbarCoordinator( mBottomToolbarCoordinator = new BottomToolbarCoordinator(
mActivity.getFullscreenManager(), mActivity.findViewById(R.id.coordinator), mActivity.getFullscreenManager(), mActivity.findViewById(R.id.coordinator),
firstButtonSlot, secondButtonSlot); firstButtonSlot, secondButtonSlot);
...@@ -650,29 +652,34 @@ public class ToolbarManager implements ToolbarTabController, UrlFocusChangeListe ...@@ -650,29 +652,34 @@ public class ToolbarManager implements ToolbarTabController, UrlFocusChangeListe
} }
} }
private ToolbarButtonSlotData.ToolbarButtonData createHomeButton(Context context) { private ToolbarButtonData createHomeButton(Context context) {
final OnClickListener homeButtonListener = v -> openHomepage(); final OnClickListener homeButtonListener = v -> openHomepage();
return new ToolbarButtonSlotData.ToolbarButtonData(R.drawable.btn_toolbar_home, return new ToolbarButtonData(R.drawable.btn_toolbar_home,
R.string.accessibility_toolbar_btn_home, homeButtonListener, context); R.string.accessibility_toolbar_btn_home, homeButtonListener, true, context);
} }
private ToolbarButtonSlotData.ToolbarButtonData createNewTabButton(Context context) { private ToolbarButtonData createNewTabButton(
final OnClickListener newTabButtonListener = v -> { OnClickListener newTabClickListener, Context context) {
if (mNewTabButtonOnClickListener != null) mNewTabButtonOnClickListener.onClick(v); return new ToolbarButtonData(R.drawable.btn_new_tab_white_normal,
}; R.string.accessibility_toolbar_btn_new_tab, newTabClickListener, false, context);
return new ToolbarButtonSlotData.ToolbarButtonData(R.drawable.plus,
R.string.accessibility_toolbar_btn_new_tab, newTabButtonListener, context);
} }
private ToolbarButtonSlotData.ToolbarButtonData createSearchAccelerator(Context context) { private ToolbarButtonData createSearchAccelerator(Context context) {
final OnClickListener searchAcceleratorListener = v -> { final OnClickListener searchAcceleratorListener = v -> {
recordOmniboxFocusReason(OmniboxFocusReason.ACCELERATOR_TAP); recordOmniboxFocusReason(OmniboxFocusReason.ACCELERATOR_TAP);
ACCELERATOR_BUTTON_TAP_ACTION.record(); ACCELERATOR_BUTTON_TAP_ACTION.record();
setUrlBarFocus(true); setUrlBarFocus(true);
}; };
return new ToolbarButtonSlotData.ToolbarButtonData(R.drawable.ic_search, return new ToolbarButtonData(R.drawable.ic_search,
R.string.accessibility_toolbar_btn_search_accelerator, searchAcceleratorListener, R.string.accessibility_toolbar_btn_search_accelerator, searchAcceleratorListener,
context); true, context);
}
private ToolbarButtonData createIncognitoToggleButton(
OnClickListener incognitoToggleClickHandler, Context context) {
return new ToolbarButtonData(R.drawable.btn_tabstrip_switch_normal,
R.string.accessibility_tabstrip_btn_incognito_toggle_standard,
incognitoToggleClickHandler, false, context);
} }
/** /**
...@@ -747,7 +754,6 @@ public class ToolbarManager implements ToolbarTabController, UrlFocusChangeListe ...@@ -747,7 +754,6 @@ public class ToolbarManager implements ToolbarTabController, UrlFocusChangeListe
OnClickListener customTabsBackClickHandler, OnClickListener incognitoClickHandler) { OnClickListener customTabsBackClickHandler, OnClickListener incognitoClickHandler) {
assert !mInitializedWithNative; assert !mInitializedWithNative;
mTabModelSelector = tabModelSelector; mTabModelSelector = tabModelSelector;
mNewTabButtonOnClickListener = newTabClickHandler;
mToolbar.setTabModelSelector(mTabModelSelector); mToolbar.setTabModelSelector(mTabModelSelector);
mToolbar.getLocationBar().updateVisualsForState(); mToolbar.getLocationBar().updateVisualsForState();
...@@ -794,11 +800,21 @@ public class ToolbarManager implements ToolbarTabController, UrlFocusChangeListe ...@@ -794,11 +800,21 @@ public class ToolbarManager implements ToolbarTabController, UrlFocusChangeListe
} }
if (mBottomToolbarCoordinator != null) { if (mBottomToolbarCoordinator != null) {
final boolean showIncognitoToggleButton =
!DeviceClassManager.enableAccessibilityLayout()
&& ChromeFeatureList.isEnabled(
ChromeFeatureList.HORIZONTAL_TAB_SWITCHER_ANDROID)
&& PrefServiceBridge.getInstance().isIncognitoModeEnabled();
final ToolbarButtonData secondSlotTabSwitcherButtonData = showIncognitoToggleButton
? createIncognitoToggleButton(incognitoClickHandler, mActivity)
: null;
mBottomToolbarCoordinator.initializeWithNative( mBottomToolbarCoordinator.initializeWithNative(
mActivity.getCompositorViewHolder().getResourceManager(), mActivity.getCompositorViewHolder().getResourceManager(),
mActivity.getCompositorViewHolder().getLayoutManager(), tabSwitcherClickHandler, mActivity.getCompositorViewHolder().getLayoutManager(), tabSwitcherClickHandler,
mAppMenuButtonHelper, mTabModelSelector, mOverviewModeBehavior, mAppMenuButtonHelper, mTabModelSelector, mOverviewModeBehavior,
mActivity.getContextualSearchManager(), mActivity.getWindowAndroid()); mActivity.getContextualSearchManager(), mActivity.getWindowAndroid(),
createNewTabButton(newTabClickHandler, mActivity),
secondSlotTabSwitcherButtonData);
} }
onNativeLibraryReady(); onNativeLibraryReady();
......
...@@ -480,9 +480,12 @@ public class ToolbarPhone extends ToolbarLayout ...@@ -480,9 +480,12 @@ public class ToolbarPhone extends ToolbarLayout
private void inflateTabSwitchingResources() { private void inflateTabSwitchingResources() {
mToggleTabStackButton = (ImageView) findViewById(R.id.tab_switcher_button); mToggleTabStackButton = (ImageView) findViewById(R.id.tab_switcher_button);
mNewTabButton = (NewTabButton) findViewById(R.id.new_tab_button);
if (FeatureUtilities.isBottomToolbarEnabled()) { if (FeatureUtilities.isBottomToolbarEnabled()) {
UiUtils.removeViewFromParent(mToggleTabStackButton); UiUtils.removeViewFromParent(mToggleTabStackButton);
UiUtils.removeViewFromParent(mNewTabButton);
mToggleTabStackButton = null; mToggleTabStackButton = null;
mNewTabButton = null;
} else { } else {
mToggleTabStackButton.setClickable(false); mToggleTabStackButton.setClickable(false);
mTabSwitcherButtonDrawable = mTabSwitcherButtonDrawable =
...@@ -490,48 +493,44 @@ public class ToolbarPhone extends ToolbarLayout ...@@ -490,48 +493,44 @@ public class ToolbarPhone extends ToolbarLayout
mTabSwitcherButtonDrawableLight = mTabSwitcherButtonDrawableLight =
TabSwitcherDrawable.createTabSwitcherDrawable(getContext(), true); TabSwitcherDrawable.createTabSwitcherDrawable(getContext(), true);
mToggleTabStackButton.setImageDrawable(mTabSwitcherButtonDrawable); mToggleTabStackButton.setImageDrawable(mTabSwitcherButtonDrawable);
} mTabSwitcherModeViews.add(mNewTabButton);
mNewTabButton = (NewTabButton) findViewById(R.id.new_tab_button);
mTabSwitcherModeViews.add(mNewTabButton);
// Ensure that the new tab button will not draw over the toolbar buttons if the // Ensure that the new tab button will not draw over the toolbar buttons if the
// translated string is long. Set a margin to the size of the toolbar button container // translated string is long. Set a margin to the size of the toolbar button container
// for the new tab button. // for the new tab button.
WindowManager wm = (WindowManager) getContext().getSystemService( WindowManager wm =
Context.WINDOW_SERVICE); (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);
Point screenSize = new Point(); Point screenSize = new Point();
wm.getDefaultDisplay().getSize(screenSize); wm.getDefaultDisplay().getSize(screenSize);
mToolbarButtonsContainer.measure( mToolbarButtonsContainer.measure(
MeasureSpec.makeMeasureSpec(screenSize.x, MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec(screenSize.x, MeasureSpec.AT_MOST),
MeasureSpec.makeMeasureSpec(screenSize.y, MeasureSpec.AT_MOST)); MeasureSpec.makeMeasureSpec(screenSize.y, MeasureSpec.AT_MOST));
MarginLayoutParamsCompat.setMarginEnd( MarginLayoutParamsCompat.setMarginEnd(getFrameLayoutParams(mNewTabButton),
getFrameLayoutParams(mNewTabButton), mToolbarButtonsContainer.getMeasuredWidth()); mToolbarButtonsContainer.getMeasuredWidth());
}
} }
private void enableTabSwitchingResources() { private void enableTabSwitchingResources() {
if (mToggleTabStackButton != null) { mToggleTabStackButton.setOnClickListener(this);
mToggleTabStackButton.setOnClickListener(this); mToggleTabStackButton.setOnLongClickListener(this);
mToggleTabStackButton.setOnLongClickListener(this); mToggleTabStackButton.setOnKeyListener(new KeyboardNavigationListener() {
mToggleTabStackButton.setOnKeyListener(new KeyboardNavigationListener() { @Override
@Override public View getNextFocusForward() {
public View getNextFocusForward() { final TintedImageButton menuButton = getMenuButton();
final TintedImageButton menuButton = getMenuButton(); if (menuButton != null && menuButton.isShown()) {
if (menuButton != null && menuButton.isShown()) { return menuButton;
return menuButton; } else {
} else { return getCurrentTabView();
return getCurrentTabView();
}
} }
}
@Override @Override
public View getNextFocusBackward() { public View getNextFocusBackward() {
return findViewById(R.id.url_bar); return findViewById(R.id.url_bar);
} }
}); });
}
mNewTabButton.setOnClickListener(this); mNewTabButton.setOnClickListener(this);
mNewTabButton.setOnLongClickListener(this); mNewTabButton.setOnLongClickListener(this);
} }
...@@ -551,7 +550,7 @@ public class ToolbarPhone extends ToolbarLayout ...@@ -551,7 +550,7 @@ public class ToolbarPhone extends ToolbarLayout
getLocationBar().onNativeLibraryReady(); getLocationBar().onNativeLibraryReady();
enableTabSwitchingResources(); if (!FeatureUtilities.isBottomToolbarEnabled()) enableTabSwitchingResources();
if (mHomeButton != null) { if (mHomeButton != null) {
changeIconToNTPIcon(mHomeButton); changeIconToNTPIcon(mHomeButton);
...@@ -577,7 +576,7 @@ public class ToolbarPhone extends ToolbarLayout ...@@ -577,7 +576,7 @@ public class ToolbarPhone extends ToolbarLayout
}); });
onHomeButtonUpdate(HomepageManager.isHomepageEnabled()); onHomeButtonUpdate(HomepageManager.isHomepageEnabled());
if (mLocationBar.useModernDesign()) mNewTabButton.setIsModern(); if (mNewTabButton != null && mLocationBar.useModernDesign()) mNewTabButton.setIsModern();
setTabSwitcherAnimationMenuDrawable(); setTabSwitcherAnimationMenuDrawable();
updateVisualsForToolbarState(); updateVisualsForToolbarState();
...@@ -1909,8 +1908,8 @@ public class ToolbarPhone extends ToolbarLayout ...@@ -1909,8 +1908,8 @@ public class ToolbarPhone extends ToolbarLayout
// Don't inflate the incognito toggle button unless the horizontal tab switcher experiment // Don't inflate the incognito toggle button unless the horizontal tab switcher experiment
// is enabled and the user actually enters the tab switcher. // is enabled and the user actually enters the tab switcher.
if (mIncognitoToggleButton == null && mTabSwitcherState != STATIC_TAB if (!FeatureUtilities.isBottomToolbarEnabled() && mIncognitoToggleButton == null
&& usingHorizontalTabSwitcher() && mTabSwitcherState != STATIC_TAB && usingHorizontalTabSwitcher()
&& PrefServiceBridge.getInstance().isIncognitoModeEnabled()) { && PrefServiceBridge.getInstance().isIncognitoModeEnabled()) {
ViewStub incognitoToggleButtonStub = findViewById(R.id.incognito_button_stub); ViewStub incognitoToggleButtonStub = findViewById(R.id.incognito_button_stub);
mIncognitoToggleButton = (IncognitoToggleButton) incognitoToggleButtonStub.inflate(); mIncognitoToggleButton = (IncognitoToggleButton) incognitoToggleButtonStub.inflate();
...@@ -1990,7 +1989,7 @@ public class ToolbarPhone extends ToolbarLayout ...@@ -1990,7 +1989,7 @@ public class ToolbarPhone extends ToolbarLayout
layoutLocationBar(getMeasuredWidth()); layoutLocationBar(getMeasuredWidth());
updateUrlExpansionAnimation(); updateUrlExpansionAnimation();
} }
mNewTabButton.setEnabled(true); if (mNewTabButton != null) mNewTabButton.setEnabled(true);
updateViewsForTabSwitcherMode(); updateViewsForTabSwitcherMode();
mTabSwitcherModeAnimation = createEnterTabSwitcherModeAnimation(); mTabSwitcherModeAnimation = createEnterTabSwitcherModeAnimation();
} else { } else {
...@@ -2081,7 +2080,7 @@ public class ToolbarPhone extends ToolbarLayout ...@@ -2081,7 +2080,7 @@ public class ToolbarPhone extends ToolbarLayout
@Override @Override
protected void onAccessibilityStatusChanged(boolean enabled) { protected void onAccessibilityStatusChanged(boolean enabled) {
super.onAccessibilityStatusChanged(enabled); super.onAccessibilityStatusChanged(enabled);
mNewTabButton.onAccessibilityStatusChanged(); if (mNewTabButton != null) mNewTabButton.onAccessibilityStatusChanged();
} }
@Override @Override
...@@ -2734,14 +2733,15 @@ public class ToolbarPhone extends ToolbarLayout ...@@ -2734,14 +2733,15 @@ public class ToolbarPhone extends ToolbarLayout
updateNtpTransitionAnimation(); updateNtpTransitionAnimation();
} }
mNewTabButton.setIsIncognito(isIncognito); if (mNewTabButton != null) {
mNewTabButton.setIsIncognito(isIncognito);
CharSequence newTabContentDescription = getResources().getText(isIncognito
? R.string.accessibility_toolbar_btn_new_incognito_tab
: R.string.accessibility_toolbar_btn_new_tab);
CharSequence newTabContentDescription = getResources().getText( if (!newTabContentDescription.equals(mNewTabButton.getContentDescription())) {
isIncognito ? R.string.accessibility_toolbar_btn_new_incognito_tab : mNewTabButton.setContentDescription(newTabContentDescription);
R.string.accessibility_toolbar_btn_new_tab); }
if (mNewTabButton != null
&& !newTabContentDescription.equals(mNewTabButton.getContentDescription())) {
mNewTabButton.setContentDescription(newTabContentDescription);
} }
if (getMenuButtonWrapper() != null) { if (getMenuButtonWrapper() != null) {
......
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