Commit b661a5eb authored by Theresa's avatar Theresa Committed by Commit Bot

Simplify NewTabButton.java

There's a bunch of custom measure, draw and tint  code that appears to be no
longer needed. I suspect it was left over from our non-Modern design and
from when Android support library didn't have tinting support built in.

Also remove unused btn_new_tab_white* assets.

BUG=897345

Change-Id: Ie3b67573371b58ecbef9f9f47518f704435e4180
Reviewed-on: https://chromium-review.googlesource.com/c/1292553
Commit-Queue: Theresa <twellington@chromium.org>
Reviewed-by: default avatarTed Choc <tedchoc@chromium.org>
Cr-Commit-Position: refs/heads/master@{#601634}
parent 83a32f26
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2015 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. -->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/btn_new_tab_white_pressed" />
<item android:state_selected="true" android:drawable="@drawable/btn_new_tab_white_pressed" />
<item android:state_focused="true" android:drawable="@drawable/btn_new_tab_white_pressed" />
<item android:drawable="@drawable/btn_new_tab_white_normal" />
</selector>
...@@ -18,18 +18,15 @@ ...@@ -18,18 +18,15 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="top|start" android:layout_gravity="top|start"
android:paddingTop="@dimen/menu_negative_software_vertical_offset"> android:paddingTop="@dimen/menu_negative_software_vertical_offset">
<view class="org.chromium.chrome.browser.widget.newtab.NewTabButton" <org.chromium.chrome.browser.toolbar.NewTabButton
android:id="@+id/empty_new_tab_button" android:id="@+id/empty_new_tab_button"
style="@style/ToolbarButton" style="@style/ToolbarButton"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_gravity="start|top" android:layout_gravity="start|top"
android:paddingStart="16dp" android:paddingStart="16dp"
android:paddingEnd="16dp" android:paddingEnd="16dp"
android:src="@drawable/btn_new_tab_white"
android:gravity="center_vertical" android:gravity="center_vertical"
android:background="?attr/selectableItemBackground" android:contentDescription="@string/accessibility_tabstrip_btn_empty_new_tab" />
android:contentDescription="@string/accessibility_tabstrip_btn_empty_new_tab"
/>
<View <View
android:layout_weight="1.0" android:layout_weight="1.0"
android:layout_height="wrap_content" android:layout_height="wrap_content"
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/toolbar_height_no_shadow" > android:layout_height="@dimen/toolbar_height_no_shadow" >
<org.chromium.chrome.browser.widget.newtab.NewTabButton <org.chromium.chrome.browser.toolbar.NewTabButton
android:id="@+id/new_tab_button" android:id="@+id/new_tab_button"
style="@style/ToolbarButton" style="@style/ToolbarButton"
android:layout_width="wrap_content" android:layout_width="wrap_content"
...@@ -21,7 +21,6 @@ ...@@ -21,7 +21,6 @@
android:paddingStart="16dp" android:paddingStart="16dp"
android:paddingEnd="16dp" android:paddingEnd="16dp"
android:visibility="invisible" android:visibility="invisible"
android:background="?attr/selectableItemBackground"
android:contentDescription="@string/accessibility_toolbar_btn_new_tab" /> android:contentDescription="@string/accessibility_toolbar_btn_new_tab" />
<org.chromium.chrome.browser.toolbar.HomePageButton <org.chromium.chrome.browser.toolbar.HomePageButton
......
...@@ -2,17 +2,15 @@ ...@@ -2,17 +2,15 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
package org.chromium.chrome.browser.widget.newtab; package org.chromium.chrome.browser.toolbar;
import android.content.Context; import android.content.Context;
import android.content.res.ColorStateList; import android.content.res.ColorStateList;
import android.graphics.Canvas; import android.support.annotation.StringRes;
import android.graphics.drawable.Drawable;
import android.support.graphics.drawable.VectorDrawableCompat; import android.support.graphics.drawable.VectorDrawableCompat;
import android.support.v4.view.ViewCompat;
import android.support.v7.content.res.AppCompatResources; import android.support.v7.content.res.AppCompatResources;
import android.support.v7.widget.AppCompatImageButton;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.widget.Button;
import org.chromium.base.ApiCompatibilityUtils; import org.chromium.base.ApiCompatibilityUtils;
import org.chromium.chrome.R; import org.chromium.chrome.R;
...@@ -23,11 +21,9 @@ import org.chromium.ui.base.DeviceFormFactor; ...@@ -23,11 +21,9 @@ import org.chromium.ui.base.DeviceFormFactor;
/** /**
* Button for creating new tabs. * Button for creating new tabs.
*/ */
public class NewTabButton extends Button implements Drawable.Callback { public class NewTabButton extends AppCompatImageButton {
private final ColorStateList mLightModeTint; private final ColorStateList mLightModeTint;
private final ColorStateList mDarkModeTint; private final ColorStateList mDarkModeTint;
private VectorDrawableCompat mModernDrawable;
private boolean mIsIncognito; private boolean mIsIncognito;
private boolean mIsNativeReady; private boolean mIsNativeReady;
...@@ -41,11 +37,8 @@ public class NewTabButton extends Button implements Drawable.Callback { ...@@ -41,11 +37,8 @@ public class NewTabButton extends Button implements Drawable.Callback {
mLightModeTint = mLightModeTint =
AppCompatResources.getColorStateList(getContext(), R.color.light_mode_tint); AppCompatResources.getColorStateList(getContext(), R.color.light_mode_tint);
mDarkModeTint = AppCompatResources.getColorStateList(getContext(), R.color.dark_mode_tint); mDarkModeTint = AppCompatResources.getColorStateList(getContext(), R.color.dark_mode_tint);
mModernDrawable = VectorDrawableCompat.create( setImageDrawable(VectorDrawableCompat.create(
getContext().getResources(), R.drawable.new_tab_icon, getContext().getTheme()); getContext().getResources(), R.drawable.new_tab_icon, getContext().getTheme()));
mModernDrawable.setBounds(
0, 0, mModernDrawable.getIntrinsicWidth(), mModernDrawable.getIntrinsicHeight());
mModernDrawable.setCallback(this);
updateDrawableTint(); updateDrawableTint();
} }
...@@ -58,49 +51,6 @@ public class NewTabButton extends Button implements Drawable.Callback { ...@@ -58,49 +51,6 @@ public class NewTabButton extends Button implements Drawable.Callback {
updateDrawableTint(); updateDrawableTint();
} }
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int desiredWidth = mModernDrawable.getIntrinsicWidth();
desiredWidth += getPaddingLeft() + getPaddingRight();
widthMeasureSpec = MeasureSpec.makeMeasureSpec(desiredWidth, MeasureSpec.EXACTLY);
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
boolean isRtl = ApiCompatibilityUtils.isLayoutRtl(this);
int paddingStart = ViewCompat.getPaddingStart(this);
int widthWithoutPadding = getWidth() - paddingStart;
canvas.save();
if (!isRtl) canvas.translate(paddingStart, 0);
drawIcon(canvas, mModernDrawable, isRtl, widthWithoutPadding);
canvas.restore();
}
private void drawIcon(Canvas canvas, Drawable drawable, boolean isRtl, int widthNoPadding) {
canvas.save();
canvas.translate(0, (getHeight() - drawable.getIntrinsicHeight()) / 2.f);
if (isRtl) {
canvas.translate(widthNoPadding - drawable.getIntrinsicWidth(), 0);
}
drawable.draw(canvas);
canvas.restore();
}
@Override
public void invalidateDrawable(Drawable dr) {
if (dr == mModernDrawable) {
invalidate();
} else {
super.invalidateDrawable(dr);
}
}
/** /**
* Updates the visual state based on whether incognito or normal tabs are being created. * Updates the visual state based on whether incognito or normal tabs are being created.
* @param incognito Whether the button is now used for creating incognito tabs. * @param incognito Whether the button is now used for creating incognito tabs.
...@@ -109,20 +59,24 @@ public class NewTabButton extends Button implements Drawable.Callback { ...@@ -109,20 +59,24 @@ public class NewTabButton extends Button implements Drawable.Callback {
if (mIsIncognito == incognito) return; if (mIsIncognito == incognito) return;
mIsIncognito = incognito; mIsIncognito = incognito;
@StringRes
int resId;
if (ChromeFeatureList.isEnabled(ChromeFeatureList.INCOGNITO_STRINGS)) {
resId = mIsIncognito ? R.string.accessibility_toolbar_btn_new_private_tab
: R.string.accessibility_toolbar_btn_new_tab;
} else {
resId = mIsIncognito ? R.string.accessibility_toolbar_btn_new_incognito_tab
: R.string.accessibility_toolbar_btn_new_tab;
}
setContentDescription(getResources().getText(resId));
updateDrawableTint(); updateDrawableTint();
invalidateDrawable(mModernDrawable); invalidate();
} }
/** Called when accessibility status is changed. */ /** Called when accessibility status is changed. */
public void onAccessibilityStatusChanged() { public void onAccessibilityStatusChanged() {
if (mModernDrawable != null) updateDrawableTint(); updateDrawableTint();
}
@Override
protected void drawableStateChanged() {
super.drawableStateChanged();
mModernDrawable.setState(getDrawableState());
} }
/** Update the tint for the icon drawable for Chrome Modern. */ /** Update the tint for the icon drawable for Chrome Modern. */
...@@ -134,6 +88,7 @@ public class NewTabButton extends Button implements Drawable.Callback { ...@@ -134,6 +88,7 @@ public class NewTabButton extends Button implements Drawable.Callback {
|| ChromeFeatureList.isEnabled( || ChromeFeatureList.isEnabled(
ChromeFeatureList.HORIZONTAL_TAB_SWITCHER_ANDROID)) ChromeFeatureList.HORIZONTAL_TAB_SWITCHER_ANDROID))
&& mIsIncognito); && mIsIncognito);
mModernDrawable.setTintList(shouldUseLightMode ? mLightModeTint : mDarkModeTint); ApiCompatibilityUtils.setImageTintList(
this, shouldUseLightMode ? mLightModeTint : mDarkModeTint);
} }
} }
...@@ -26,7 +26,6 @@ import android.os.Build; ...@@ -26,7 +26,6 @@ import android.os.Build;
import android.os.SystemClock; import android.os.SystemClock;
import android.support.annotation.IntDef; import android.support.annotation.IntDef;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.support.annotation.StringRes;
import android.support.v4.graphics.drawable.DrawableCompat; import android.support.v4.graphics.drawable.DrawableCompat;
import android.support.v4.view.ViewCompat; import android.support.v4.view.ViewCompat;
import android.support.v4.view.animation.FastOutSlowInInterpolator; import android.support.v4.view.animation.FastOutSlowInInterpolator;
...@@ -79,7 +78,6 @@ import org.chromium.chrome.browser.util.FeatureUtilities; ...@@ -79,7 +78,6 @@ import org.chromium.chrome.browser.util.FeatureUtilities;
import org.chromium.chrome.browser.util.MathUtils; import org.chromium.chrome.browser.util.MathUtils;
import org.chromium.chrome.browser.util.ViewUtils; import org.chromium.chrome.browser.util.ViewUtils;
import org.chromium.chrome.browser.widget.animation.CancelAwareAnimatorListener; import org.chromium.chrome.browser.widget.animation.CancelAwareAnimatorListener;
import org.chromium.chrome.browser.widget.newtab.NewTabButton;
import org.chromium.chrome.browser.widget.textbubble.TextBubble; import org.chromium.chrome.browser.widget.textbubble.TextBubble;
import org.chromium.components.feature_engagement.EventConstants; import org.chromium.components.feature_engagement.EventConstants;
import org.chromium.ui.UiUtils; import org.chromium.ui.UiUtils;
...@@ -2614,23 +2612,7 @@ public class ToolbarPhone extends ToolbarLayout ...@@ -2614,23 +2612,7 @@ public class ToolbarPhone extends ToolbarLayout
updateNtpTransitionAnimation(); updateNtpTransitionAnimation();
} }
if (mNewTabButton != null) { if (mNewTabButton != null) mNewTabButton.setIsIncognito(isIncognito);
mNewTabButton.setIsIncognito(isIncognito);
@StringRes
int resId;
if (ChromeFeatureList.isEnabled(ChromeFeatureList.INCOGNITO_STRINGS)) {
resId = isIncognito ? R.string.accessibility_toolbar_btn_new_private_tab
: R.string.accessibility_toolbar_btn_new_tab;
} else {
resId = isIncognito ? R.string.accessibility_toolbar_btn_new_incognito_tab
: R.string.accessibility_toolbar_btn_new_tab;
}
CharSequence newTabContentDescription = getResources().getText(resId);
if (!newTabContentDescription.equals(mNewTabButton.getContentDescription())) {
mNewTabButton.setContentDescription(newTabContentDescription);
}
}
if (getMenuButtonWrapper() != null) { if (getMenuButtonWrapper() != null) {
getMenuButtonWrapper().setVisibility(View.VISIBLE); getMenuButtonWrapper().setVisibility(View.VISIBLE);
......
...@@ -52,9 +52,9 @@ import org.chromium.chrome.browser.tabmodel.TabModelSelector; ...@@ -52,9 +52,9 @@ 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.tabmodel.TabModelSelectorTabObserver; import org.chromium.chrome.browser.tabmodel.TabModelSelectorTabObserver;
import org.chromium.chrome.browser.tabmodel.TabModelUtils; import org.chromium.chrome.browser.tabmodel.TabModelUtils;
import org.chromium.chrome.browser.toolbar.NewTabButton;
import org.chromium.chrome.browser.util.FeatureUtilities; import org.chromium.chrome.browser.util.FeatureUtilities;
import org.chromium.chrome.browser.vr.keyboard.VrInputMethodManagerWrapper; import org.chromium.chrome.browser.vr.keyboard.VrInputMethodManagerWrapper;
import org.chromium.chrome.browser.widget.newtab.NewTabButton;
import org.chromium.content_public.browser.ImeAdapter; import org.chromium.content_public.browser.ImeAdapter;
import org.chromium.content_public.browser.LoadUrlParams; import org.chromium.content_public.browser.LoadUrlParams;
import org.chromium.content_public.browser.ViewEventSink; import org.chromium.content_public.browser.ViewEventSink;
......
...@@ -1525,6 +1525,7 @@ chrome_java_sources = [ ...@@ -1525,6 +1525,7 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/toolbar/HomePageButton.java", "java/src/org/chromium/chrome/browser/toolbar/HomePageButton.java",
"java/src/org/chromium/chrome/browser/toolbar/IncognitoToggleTabLayout.java", "java/src/org/chromium/chrome/browser/toolbar/IncognitoToggleTabLayout.java",
"java/src/org/chromium/chrome/browser/toolbar/KeyboardNavigationListener.java", "java/src/org/chromium/chrome/browser/toolbar/KeyboardNavigationListener.java",
"java/src/org/chromium/chrome/browser/toolbar/NewTabButton.java",
"java/src/org/chromium/chrome/browser/toolbar/ScrollingBottomViewResourceFrameLayout.java", "java/src/org/chromium/chrome/browser/toolbar/ScrollingBottomViewResourceFrameLayout.java",
"java/src/org/chromium/chrome/browser/toolbar/TabSwitcherButtonViewBinder.java", "java/src/org/chromium/chrome/browser/toolbar/TabSwitcherButtonViewBinder.java",
"java/src/org/chromium/chrome/browser/toolbar/TabSwitcherButtonCoordinator.java", "java/src/org/chromium/chrome/browser/toolbar/TabSwitcherButtonCoordinator.java",
...@@ -1703,7 +1704,6 @@ chrome_java_sources = [ ...@@ -1703,7 +1704,6 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/widget/findinpage/FindToolbarTablet.java", "java/src/org/chromium/chrome/browser/widget/findinpage/FindToolbarTablet.java",
"java/src/org/chromium/chrome/browser/widget/incognitotoggle/IncognitoToggleButton.java", "java/src/org/chromium/chrome/browser/widget/incognitotoggle/IncognitoToggleButton.java",
"java/src/org/chromium/chrome/browser/widget/incognitotoggle/IncognitoToggleButtonTablet.java", "java/src/org/chromium/chrome/browser/widget/incognitotoggle/IncognitoToggleButtonTablet.java",
"java/src/org/chromium/chrome/browser/widget/newtab/NewTabButton.java",
"java/src/org/chromium/chrome/browser/widget/selection/SelectableItemView.java", "java/src/org/chromium/chrome/browser/widget/selection/SelectableItemView.java",
"java/src/org/chromium/chrome/browser/widget/selection/SelectableItemViewBase.java", "java/src/org/chromium/chrome/browser/widget/selection/SelectableItemViewBase.java",
"java/src/org/chromium/chrome/browser/widget/selection/SelectableItemViewHolder.java", "java/src/org/chromium/chrome/browser/widget/selection/SelectableItemViewHolder.java",
......
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