Commit 66251a1c authored by Patrick Noland's avatar Patrick Noland Committed by Commit Bot

Destroy activityTabObserver in ToolbarManager

Without destroying this observer, ToolbarManager will still receive and respond to tab change notifications, which can in theory happen post-destruction. This change also adds a null guard in OptionalBrowsingModeButtonController.

Bug: 1071254
Change-Id: I5730f1b173dd0ff803fab0350b56513df69b5eaf
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2153687Reviewed-by: default avatarTheresa  <twellington@chromium.org>
Commit-Queue: Patrick Noland <pnoland@chromium.org>
Cr-Commit-Position: refs/heads/master@{#759846}
parent ebaae77d
...@@ -1127,6 +1127,12 @@ public class ToolbarManager implements ToolbarTabController, UrlFocusChangeListe ...@@ -1127,6 +1127,12 @@ public class ToolbarManager implements ToolbarTabController, UrlFocusChangeListe
if (mTabThemeColorProvider != null) mTabThemeColorProvider.removeThemeColorObserver(this); if (mTabThemeColorProvider != null) mTabThemeColorProvider.removeThemeColorObserver(this);
if (mAppThemeColorProvider != null) mAppThemeColorProvider.destroy(); if (mAppThemeColorProvider != null) mAppThemeColorProvider.destroy();
if (mActivityTabTabObserver != null) {
mActivityTabTabObserver.destroy();
mActivityTabTabObserver = null;
}
mActivity.unregisterComponentCallbacks(mComponentCallbacks); mActivity.unregisterComponentCallbacks(mComponentCallbacks);
mComponentCallbacks = null; mComponentCallbacks = null;
AccessibilityUtil.removeObserver(this); AccessibilityUtil.removeObserver(this);
......
...@@ -85,6 +85,7 @@ class OptionalBrowsingModeButtonController { ...@@ -85,6 +85,7 @@ class OptionalBrowsingModeButtonController {
* Show the highest precedence optional button, hiding the optional button if none can be shown. * Show the highest precedence optional button, hiding the optional button if none can be shown.
*/ */
private void showHighestPrecedenceOptionalButton() { private void showHighestPrecedenceOptionalButton() {
if (mButtonDataProviders == null) return;
for (ButtonDataProvider provider : mButtonDataProviders) { for (ButtonDataProvider provider : mButtonDataProviders) {
ButtonData buttonData = provider.get(mTabSupplier.get()); ButtonData buttonData = provider.get(mTabSupplier.get());
if (buttonData != null && buttonData.canShow) { if (buttonData != null && buttonData.canShow) {
......
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