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 @@
android:layout_height="wrap_content"
android:layout_gravity="top|start"
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"
style="@style/ToolbarButton"
android:layout_width="wrap_content"
android:layout_gravity="start|top"
android:paddingStart="16dp"
android:paddingEnd="16dp"
android:src="@drawable/btn_new_tab_white"
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
android:layout_weight="1.0"
android:layout_height="wrap_content"
......
......@@ -13,7 +13,7 @@
android:layout_width="match_parent"
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"
style="@style/ToolbarButton"
android:layout_width="wrap_content"
......@@ -21,7 +21,6 @@
android:paddingStart="16dp"
android:paddingEnd="16dp"
android:visibility="invisible"
android:background="?attr/selectableItemBackground"
android:contentDescription="@string/accessibility_toolbar_btn_new_tab" />
<org.chromium.chrome.browser.toolbar.HomePageButton
......
......@@ -2,17 +2,15 @@
// Use of this source code is governed by a BSD-style license that can be
// 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.res.ColorStateList;
import android.graphics.Canvas;
import android.graphics.drawable.Drawable;
import android.support.annotation.StringRes;
import android.support.graphics.drawable.VectorDrawableCompat;
import android.support.v4.view.ViewCompat;
import android.support.v7.content.res.AppCompatResources;
import android.support.v7.widget.AppCompatImageButton;
import android.util.AttributeSet;
import android.widget.Button;
import org.chromium.base.ApiCompatibilityUtils;
import org.chromium.chrome.R;
......@@ -23,11 +21,9 @@ import org.chromium.ui.base.DeviceFormFactor;
/**
* 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 mDarkModeTint;
private VectorDrawableCompat mModernDrawable;
private boolean mIsIncognito;
private boolean mIsNativeReady;
......@@ -41,11 +37,8 @@ public class NewTabButton extends Button implements Drawable.Callback {
mLightModeTint =
AppCompatResources.getColorStateList(getContext(), R.color.light_mode_tint);
mDarkModeTint = AppCompatResources.getColorStateList(getContext(), R.color.dark_mode_tint);
mModernDrawable = VectorDrawableCompat.create(
getContext().getResources(), R.drawable.new_tab_icon, getContext().getTheme());
mModernDrawable.setBounds(
0, 0, mModernDrawable.getIntrinsicWidth(), mModernDrawable.getIntrinsicHeight());
mModernDrawable.setCallback(this);
setImageDrawable(VectorDrawableCompat.create(
getContext().getResources(), R.drawable.new_tab_icon, getContext().getTheme()));
updateDrawableTint();
}
......@@ -58,49 +51,6 @@ public class NewTabButton extends Button implements Drawable.Callback {
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.
* @param incognito Whether the button is now used for creating incognito tabs.
......@@ -109,20 +59,24 @@ public class NewTabButton extends Button implements Drawable.Callback {
if (mIsIncognito == incognito) return;
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();
invalidateDrawable(mModernDrawable);
invalidate();
}
/** Called when accessibility status is changed. */
public void onAccessibilityStatusChanged() {
if (mModernDrawable != null) updateDrawableTint();
}
@Override
protected void drawableStateChanged() {
super.drawableStateChanged();
mModernDrawable.setState(getDrawableState());
updateDrawableTint();
}
/** Update the tint for the icon drawable for Chrome Modern. */
......@@ -134,6 +88,7 @@ public class NewTabButton extends Button implements Drawable.Callback {
|| ChromeFeatureList.isEnabled(
ChromeFeatureList.HORIZONTAL_TAB_SWITCHER_ANDROID))
&& mIsIncognito);
mModernDrawable.setTintList(shouldUseLightMode ? mLightModeTint : mDarkModeTint);
ApiCompatibilityUtils.setImageTintList(
this, shouldUseLightMode ? mLightModeTint : mDarkModeTint);
}
}
......@@ -26,7 +26,6 @@ import android.os.Build;
import android.os.SystemClock;
import android.support.annotation.IntDef;
import android.support.annotation.Nullable;
import android.support.annotation.StringRes;
import android.support.v4.graphics.drawable.DrawableCompat;
import android.support.v4.view.ViewCompat;
import android.support.v4.view.animation.FastOutSlowInInterpolator;
......@@ -79,7 +78,6 @@ import org.chromium.chrome.browser.util.FeatureUtilities;
import org.chromium.chrome.browser.util.MathUtils;
import org.chromium.chrome.browser.util.ViewUtils;
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.components.feature_engagement.EventConstants;
import org.chromium.ui.UiUtils;
......@@ -2614,23 +2612,7 @@ public class ToolbarPhone extends ToolbarLayout
updateNtpTransitionAnimation();
}
if (mNewTabButton != null) {
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 (mNewTabButton != null) mNewTabButton.setIsIncognito(isIncognito);
if (getMenuButtonWrapper() != null) {
getMenuButtonWrapper().setVisibility(View.VISIBLE);
......
......@@ -52,9 +52,9 @@ import org.chromium.chrome.browser.tabmodel.TabModelSelector;
import org.chromium.chrome.browser.tabmodel.TabModelSelectorObserver;
import org.chromium.chrome.browser.tabmodel.TabModelSelectorTabObserver;
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.vr.keyboard.VrInputMethodManagerWrapper;
import org.chromium.chrome.browser.widget.newtab.NewTabButton;
import org.chromium.content_public.browser.ImeAdapter;
import org.chromium.content_public.browser.LoadUrlParams;
import org.chromium.content_public.browser.ViewEventSink;
......
......@@ -1525,6 +1525,7 @@ chrome_java_sources = [
"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/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/TabSwitcherButtonViewBinder.java",
"java/src/org/chromium/chrome/browser/toolbar/TabSwitcherButtonCoordinator.java",
......@@ -1703,7 +1704,6 @@ chrome_java_sources = [
"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/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/SelectableItemViewBase.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