Chromium Code Reviews| Index: chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarPhone.java |
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarPhone.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarPhone.java |
| index 3c6d49dc0cd14cbad3168162346238140cf40fcd..7b59be2c00290c7c22d08d30386d02bb8567bcd5 100644 |
| --- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarPhone.java |
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarPhone.java |
| @@ -49,7 +49,6 @@ import org.chromium.chrome.R; |
| import org.chromium.chrome.browser.ChromeSwitches; |
| import org.chromium.chrome.browser.compositor.Invalidator; |
| import org.chromium.chrome.browser.ntp.NewTabPage; |
| -import org.chromium.chrome.browser.omaha.UpdateMenuItemHelper; |
| import org.chromium.chrome.browser.omnibox.LocationBar; |
| import org.chromium.chrome.browser.omnibox.LocationBarPhone; |
| import org.chromium.chrome.browser.omnibox.UrlContainer; |
| @@ -132,7 +131,8 @@ public class ToolbarPhone extends ToolbarLayout |
| private ColorDrawable mTabSwitcherAnimationBgOverlay; |
| private TabSwitcherDrawable mTabSwitcherAnimationTabStackDrawable; |
| private Drawable mTabSwitcherAnimationMenuDrawable; |
| - private Drawable mTabSwitcherAnimationMenuBadgeDrawable; |
| + private Drawable mTabSwitcherAnimationMenuBadgeDarkDrawable; |
| + private Drawable mTabSwitcherAnimationMenuBadgeLightDrawable; |
| // Value that determines the amount of transition from the normal toolbar mode to TabSwitcher |
| // mode. 0 = entirely in normal mode and 1.0 = entirely in TabSwitcher mode. In between values |
| // can be used for animating between the two view modes. |
| @@ -447,6 +447,7 @@ public class ToolbarPhone extends ToolbarLayout |
| // and the listener is setup. |
| if (mToggleTabStackButton != null && mToggleTabStackButton.isClickable() |
| && mTabSwitcherListener != null) { |
| + cancelAppMenuUpdateBadgeAnimation(); |
| mTabSwitcherListener.onClick(mToggleTabStackButton); |
| RecordUserAction.record("MobileToolbarShowStackView"); |
| } |
| @@ -996,9 +997,8 @@ public class ToolbarPhone extends ToolbarLayout |
| } |
| // Draw the menu button if necessary. |
| - if (mTabSwitcherAnimationMenuDrawable != null |
| + if (!mShowMenuBadge && mTabSwitcherAnimationMenuDrawable != null |
| && mUrlExpansionPercent != 1f) { |
| - canvas.save(); |
| mTabSwitcherAnimationMenuDrawable.setBounds( |
| mMenuButton.getPaddingLeft(), mMenuButton.getPaddingTop(), |
| mMenuButton.getWidth() - mMenuButton.getPaddingRight(), |
| @@ -1010,15 +1010,22 @@ public class ToolbarPhone extends ToolbarLayout |
| : mDarkModeDefaultColor; |
| mTabSwitcherAnimationMenuDrawable.setColorFilter(color, PorterDuff.Mode.SRC_IN); |
| mTabSwitcherAnimationMenuDrawable.draw(canvas); |
| - canvas.restore(); |
| } |
| // Draw the menu badge if necessary. |
| - if (mShowMenuBadge && mTabSwitcherAnimationMenuBadgeDrawable != null |
| + if (mShowMenuBadge && mTabSwitcherAnimationMenuBadgeDarkDrawable != null |
| + && mTabSwitcherAnimationMenuBadgeLightDrawable != null |
| && mUrlExpansionPercent != 1f) { |
| + Drawable badgeDrawable = mUseLightToolbarDrawables |
| + ? mTabSwitcherAnimationMenuBadgeLightDrawable |
| + : mTabSwitcherAnimationMenuBadgeDarkDrawable; |
|
gone
2016/02/13 00:26:16
Maybe move this badgeDrawable call outside the if
Theresa
2016/02/16 18:21:53
Done.
|
| + badgeDrawable.setBounds( |
| + mMenuBadge.getPaddingLeft(), mMenuBadge.getPaddingTop(), |
| + mMenuBadge.getWidth() - mMenuBadge.getPaddingRight(), |
| + mMenuBadge.getHeight() - mMenuBadge.getPaddingBottom()); |
| translateCanvasToView(mToolbarButtonsContainer, mMenuBadge, canvas); |
| - mTabSwitcherAnimationMenuBadgeDrawable.setAlpha(rgbAlpha); |
| - mTabSwitcherAnimationMenuBadgeDrawable.draw(canvas); |
| + badgeDrawable.setAlpha(rgbAlpha); |
| + badgeDrawable.draw(canvas); |
| } |
| canvas.restore(); |
| @@ -1448,12 +1455,6 @@ public class ToolbarPhone extends ToolbarLayout |
| mUIAnimatingTabSwitcherTransition = false; |
| mTabSwitcherModePercent = mIsInTabSwitcherMode ? 1.0f : 0.0f; |
| - if (mShowMenuBadge && !mIsInTabSwitcherMode) { |
| - // If mInTabSwitcherMode is true, the menu button drawable will be updated in |
| - // #updateVisualsForToolbarState(). |
| - mMenuButton.setImageBitmap( |
| - UpdateMenuItemHelper.getInstance().getBadgedMenuButtonBitmap(getContext())); |
| - } |
| if (!mAnimateNormalToolbar) { |
| finishAnimations(); |
| updateVisualsForToolbarState(mIsInTabSwitcherMode); |
| @@ -1993,14 +1994,11 @@ public class ToolbarPhone extends ToolbarLayout |
| } |
| if (shouldShowMenuButton()) { |
| - // Only change the menu button drawable if isInTabSwitcherMode to avoid changing |
| - // it too soon if we're in the process of existing tab switcher mode. The drawable |
| - // will be changed in #onTabSwitcherTransitionFinished if we are exiting tab switcher |
| - // mode. |
| - if (mShowMenuBadge && isInTabSwitcherMode) { |
| - mMenuButton.setImageDrawable(mUnbadgedMenuButtonDrawable); |
| - } |
| mMenuButton.setTint(mUseLightToolbarDrawables ? mLightModeTint : mDarkModeTint); |
| + |
| + if (mShowMenuBadge && !isInTabSwitcherMode) { |
| + setAppMenuUpdateBadgeDrawable(mUseLightToolbarDrawables); |
| + } |
| } |
| ColorStateList tint = mUseLightToolbarDrawables ? mLightModeTint : mDarkModeTint; |
| if (isReturnButtonVisible()) mReturnButton.setTint(tint); |
| @@ -2046,40 +2044,44 @@ public class ToolbarPhone extends ToolbarLayout |
| @Override |
| public void showAppMenuUpdateBadge() { |
| super.showAppMenuUpdateBadge(); |
| + |
| // Set up variables. |
| if (!mBrowsingModeViews.contains(mMenuBadge)) { |
| mBrowsingModeViews.add(mMenuBadge); |
| } |
| - // Finish any in-progress animations and set the TabSwitcherAnimationMenuDrawable. |
| + // Finish any in-progress animations and set the TabSwitcherAnimationMenuBadgeDrawables. |
| finishAnimations(); |
| - setTabSwitcherAnimationMenuDrawable(); |
| + setTabSwitcherAnimationMenuBadgeDrawable(); |
| - // Show the badge and update the menu button drawable. |
| - if (!mIsInTabSwitcherMode) { |
| - setAppMenuUpdateBadgeToVisible(); |
| + // Show the badge. |
| + if (!mIsInTabSwitcherMode && shouldShowMenuButton()) { |
| + if (mUseLightToolbarDrawables) { |
| + setAppMenuUpdateBadgeDrawable(mUseLightToolbarDrawables); |
| + } |
| + setAppMenuUpdateBadgeToVisible(true); |
| } |
| - mPhoneLocationBar.showAppMenuUpdateBadge(); |
| + mPhoneLocationBar.showAppMenuUpdateBadge(true); |
| } |
| @Override |
| - public void removeAppMenuUpdateBadge() { |
| - super.removeAppMenuUpdateBadge(); |
| - mPhoneLocationBar.removeAppMenuUpdateBadge(); |
| + public void removeAppMenuUpdateBadge(boolean animate) { |
| + super.removeAppMenuUpdateBadge(animate); |
| + |
| + if (mBrowsingModeViews.contains(mMenuBadge)) { |
| + mBrowsingModeViews.remove(mMenuBadge); |
| + mTabSwitcherAnimationMenuBadgeDarkDrawable = null; |
| + mTabSwitcherAnimationMenuBadgeLightDrawable = null; |
| + } |
| + |
| + mPhoneLocationBar.removeAppMenuUpdateBadge(animate); |
| } |
| private void setTabSwitcherAnimationMenuDrawable() { |
| if (!shouldShowMenuButton()) return; |
| - Resources res = getResources(); |
| - if (mShowMenuBadge) { |
| - mTabSwitcherAnimationMenuDrawable = new BitmapDrawable(res, |
| - UpdateMenuItemHelper.getInstance().getBadgedMenuButtonBitmap(getContext())); |
| - mTabSwitcherAnimationMenuBadgeDrawable = mMenuBadge.getDrawable().mutate(); |
| - } else { |
| - mTabSwitcherAnimationMenuDrawable = ApiCompatibilityUtils.getDrawable(getResources(), |
| - R.drawable.btn_menu); |
| - } |
| + mTabSwitcherAnimationMenuDrawable = ApiCompatibilityUtils.getDrawable(getResources(), |
| + R.drawable.btn_menu); |
| mTabSwitcherAnimationMenuDrawable.mutate(); |
| mTabSwitcherAnimationMenuDrawable.setColorFilter( |
| isIncognito() ? mLightModeDefaultColor : mDarkModeDefaultColor, |
| @@ -2087,6 +2089,18 @@ public class ToolbarPhone extends ToolbarLayout |
| ((BitmapDrawable) mTabSwitcherAnimationMenuDrawable).setGravity(Gravity.CENTER); |
| } |
| + private void setTabSwitcherAnimationMenuBadgeDrawable() { |
| + mTabSwitcherAnimationMenuBadgeDarkDrawable = ApiCompatibilityUtils.getDrawable( |
| + getResources(), R.drawable.badge_update_dark); |
| + mTabSwitcherAnimationMenuBadgeDarkDrawable.mutate(); |
| + ((BitmapDrawable) mTabSwitcherAnimationMenuBadgeDarkDrawable).setGravity(Gravity.CENTER); |
| + |
| + mTabSwitcherAnimationMenuBadgeLightDrawable = ApiCompatibilityUtils.getDrawable( |
| + getResources(), R.drawable.badge_update_light); |
| + mTabSwitcherAnimationMenuBadgeLightDrawable.mutate(); |
| + ((BitmapDrawable) mTabSwitcherAnimationMenuBadgeLightDrawable).setGravity(Gravity.CENTER); |
| + } |
| + |
| @Override |
| public void setReturnButtonListener(View.OnClickListener listener) { |
| mReturnButtonListener = listener; |