Commit 903e2e41 authored by Brandon Wylie's avatar Brandon Wylie Committed by Commit Bot

Update the bookmark button when the app theme tint changes

The setup for updating the bookmark button doesn't respond well
to theme changes.

Bug: 1077684
Change-Id: I9a07fc0a52b0fe06edc530ae299ae01b6a7ed8a1
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2218711
Commit-Queue: Brandon Wylie <wylieb@chromium.org>
Reviewed-by: default avatarPatrick Noland <pnoland@chromium.org>
Reviewed-by: default avatarTheresa  <twellington@chromium.org>
Cr-Commit-Position: refs/heads/master@{#773307}
parent 5955af09
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
package org.chromium.chrome.browser.toolbar; package org.chromium.chrome.browser.toolbar;
import android.content.ComponentCallbacks; import android.content.ComponentCallbacks;
import android.content.res.ColorStateList;
import android.content.res.Configuration; import android.content.res.Configuration;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.os.Handler; import android.os.Handler;
...@@ -32,6 +33,7 @@ import org.chromium.chrome.browser.ChromeActivity; ...@@ -32,6 +33,7 @@ import org.chromium.chrome.browser.ChromeActivity;
import org.chromium.chrome.browser.TabLoadStatus; import org.chromium.chrome.browser.TabLoadStatus;
import org.chromium.chrome.browser.ThemeColorProvider; import org.chromium.chrome.browser.ThemeColorProvider;
import org.chromium.chrome.browser.ThemeColorProvider.ThemeColorObserver; import org.chromium.chrome.browser.ThemeColorProvider.ThemeColorObserver;
import org.chromium.chrome.browser.ThemeColorProvider.TintObserver;
import org.chromium.chrome.browser.WindowDelegate; import org.chromium.chrome.browser.WindowDelegate;
import org.chromium.chrome.browser.bookmarks.BookmarkBridge; import org.chromium.chrome.browser.bookmarks.BookmarkBridge;
import org.chromium.chrome.browser.compositor.Invalidator; import org.chromium.chrome.browser.compositor.Invalidator;
...@@ -114,7 +116,7 @@ import java.util.List; ...@@ -114,7 +116,7 @@ import java.util.List;
* Contains logic for managing the toolbar visual component. This class manages the interactions * Contains logic for managing the toolbar visual component. This class manages the interactions
* with the rest of the application to ensure the toolbar is always visually up to date. * with the rest of the application to ensure the toolbar is always visually up to date.
*/ */
public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserver, public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserver, TintObserver,
MenuButtonDelegate, AccessibilityUtil.Observer { MenuButtonDelegate, AccessibilityUtil.Observer {
/** /**
...@@ -125,7 +127,7 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve ...@@ -125,7 +127,7 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve
private final IncognitoStateProvider mIncognitoStateProvider; private final IncognitoStateProvider mIncognitoStateProvider;
private final TabCountProvider mTabCountProvider; private final TabCountProvider mTabCountProvider;
private final ThemeColorProvider mTabThemeColorProvider; private final ThemeColorProvider mTabThemeColorProvider;
private final AppThemeColorProvider mAppThemeColorProvider; private AppThemeColorProvider mAppThemeColorProvider;
private final TopToolbarCoordinator mToolbar; private final TopToolbarCoordinator mToolbar;
private final ToolbarControlContainer mControlContainer; private final ToolbarControlContainer mControlContainer;
private final BrowserControlsStateProvider.Observer mBrowserControlsObserver; private final BrowserControlsStateProvider.Observer mBrowserControlsObserver;
...@@ -292,6 +294,8 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve ...@@ -292,6 +294,8 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve
mTabThemeColorProvider.addThemeColorObserver(this); mTabThemeColorProvider.addThemeColorObserver(this);
mAppThemeColorProvider = new AppThemeColorProvider(mActivity); mAppThemeColorProvider = new AppThemeColorProvider(mActivity);
// Observe tint changes to update sub-components that rely on the tint (crbug.com/1077684).
mAppThemeColorProvider.addTintObserver(this);
mActivityTabProvider = tabProvider; mActivityTabProvider = tabProvider;
mToolbarTabController = new ToolbarTabControllerImpl(mLocationBarModel::getTab, mToolbarTabController = new ToolbarTabControllerImpl(mLocationBarModel::getTab,
...@@ -961,7 +965,11 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve ...@@ -961,7 +965,11 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve
} }
if (mTabThemeColorProvider != null) mTabThemeColorProvider.removeThemeColorObserver(this); if (mTabThemeColorProvider != null) mTabThemeColorProvider.removeThemeColorObserver(this);
if (mAppThemeColorProvider != null) mAppThemeColorProvider.destroy(); if (mAppThemeColorProvider != null) {
mAppThemeColorProvider.removeTintObserver(this);
mAppThemeColorProvider.destroy();
mAppThemeColorProvider = null;
}
if (mActivityTabTabObserver != null) { if (mActivityTabTabObserver != null) {
mActivityTabTabObserver.destroy(); mActivityTabTabObserver.destroy();
...@@ -1106,6 +1114,11 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve ...@@ -1106,6 +1114,11 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve
mToolbar.onPrimaryColorChanged(shouldAnimate); mToolbar.onPrimaryColorChanged(shouldAnimate);
} }
@Override
public void onTintChanged(ColorStateList tint, boolean useLight) {
updateBookmarkButtonStatus();
}
/** /**
* @param shouldUpdate Whether we should be updating the toolbar primary color based on updates * @param shouldUpdate Whether we should be updating the toolbar primary color based on updates
* from the Tab. * from the Tab.
......
...@@ -471,12 +471,8 @@ public class ToolbarTablet extends ToolbarLayout ...@@ -471,12 +471,8 @@ public class ToolbarTablet extends ToolbarLayout
void updateBookmarkButton(boolean isBookmarked, boolean editingAllowed) { void updateBookmarkButton(boolean isBookmarked, boolean editingAllowed) {
if (isBookmarked) { if (isBookmarked) {
mBookmarkButton.setImageResource(R.drawable.btn_star_filled); mBookmarkButton.setImageResource(R.drawable.btn_star_filled);
// TODO (huayinz): Ask UX whether night mode should have a white or blue star.
// Non-incognito mode shows a blue filled star.
ApiCompatibilityUtils.setImageTintList(mBookmarkButton, ApiCompatibilityUtils.setImageTintList(mBookmarkButton,
useLight() ? getTint() AppCompatResources.getColorStateList(getContext(), R.color.blue_mode_tint));
: AppCompatResources.getColorStateList(
getContext(), R.color.blue_mode_tint));
mBookmarkButton.setContentDescription(getContext().getString(R.string.edit_bookmark)); mBookmarkButton.setContentDescription(getContext().getString(R.string.edit_bookmark));
} else { } else {
mBookmarkButton.setImageResource(R.drawable.btn_star); mBookmarkButton.setImageResource(R.drawable.btn_star);
......
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