| 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 437f9fa7ab8b4953ed8950cd308d1984a1cb31bc..9b3081f38ec0b01237ef8563329abf8f6e21c26b 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
|
| @@ -46,7 +46,6 @@ import org.chromium.base.metrics.RecordUserAction;
|
| import org.chromium.chrome.R;
|
| 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;
|
| @@ -125,7 +124,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.
|
| @@ -436,6 +436,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");
|
| }
|
| @@ -966,9 +967,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(),
|
| @@ -980,15 +980,20 @@ 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
|
| - && mUrlExpansionPercent != 1f) {
|
| + Drawable badgeDrawable = mUseLightToolbarDrawables
|
| + ? mTabSwitcherAnimationMenuBadgeLightDrawable
|
| + : mTabSwitcherAnimationMenuBadgeDarkDrawable;
|
| + if (mShowMenuBadge && badgeDrawable != null && mUrlExpansionPercent != 1f) {
|
| + 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();
|
| @@ -1391,12 +1396,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);
|
| @@ -1935,14 +1934,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);
|
| + }
|
| }
|
| if (mHomeButton.getVisibility() != GONE) {
|
| mHomeButton.setTint(mUseLightToolbarDrawables ? mLightModeTint : mDarkModeTint);
|
| @@ -1988,45 +1984,61 @@ 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,
|
| PorterDuff.Mode.SRC_IN);
|
| ((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);
|
| + }
|
| }
|
|
|
|
|