Commit 10268615 authored by Side Yilmaz's avatar Side Yilmaz Committed by Commit Bot

Add null check to for IncognitoTabModelObserver functions.

This CL adds null check for mTabSwitcherModeToolbar to
IncognitoTabModelObserver callback not to cause NPE.
In addition to that, this CL introduces
|maybeInitializeOnIncognitoTabsExistenceChanged| and
|maybeInitializeIncognitoTabModelObserver| functions to
perform initialization in both |setTabModelSelector| and
|initializeTabSwitcherToolbar| functions.

Bug: 1142547
Change-Id: Ib539d70e06b4ebe86464867409e0a736dd7bd4ad
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2502373
Commit-Queue: Side YILMAZ <sideyilmaz@chromium.org>
Reviewed-by: default avatarYue Zhang <yuezhanggg@chromium.org>
Reviewed-by: default avatarFilip Gorski <fgorski@chromium.org>
Reviewed-by: default avatarPatrick Noland <pnoland@chromium.org>
Cr-Commit-Position: refs/heads/master@{#821821}
parent 55d1d21b
......@@ -125,24 +125,8 @@ class TabSwitcherModeTTCoordinatorPhone {
mTabSwitcherModeToolbar.setTabModelSelector(selector);
}
if (isNewTabVariationEnabled()) {
mIncognitoTabModelObserver = new IncognitoTabModelObserver() {
@Override
public void wasFirstTabCreated() {
mTabSwitcherModeToolbar.onIncognitoTabsExistenceChanged(true);
}
@Override
public void didBecomeEmpty() {
mTabSwitcherModeToolbar.onIncognitoTabsExistenceChanged(false);
}
};
mTabModelSelector.addIncognitoTabModelObserver(mIncognitoTabModelObserver);
if (mTabSwitcherModeToolbar != null) {
boolean doesExist = mTabModelSelector.getModel(true).getCount() != 0;
mTabSwitcherModeToolbar.onIncognitoTabsExistenceChanged(doesExist);
}
}
maybeInitializeIncognitoTabModelObserver();
maybeNotifyOnIncognitoTabsExistenceChanged();
}
/**
......@@ -184,10 +168,8 @@ class TabSwitcherModeTTCoordinatorPhone {
assert mIncognitoStateProvider != null;
mTabSwitcherModeToolbar.setIncognitoStateProvider(mIncognitoStateProvider);
if (isNewTabVariationEnabled()) {
boolean doesExist = mTabModelSelector.getModel(true).getCount() != 0;
mTabSwitcherModeToolbar.onIncognitoTabsExistenceChanged(doesExist);
}
maybeInitializeIncognitoTabModelObserver();
maybeNotifyOnIncognitoTabsExistenceChanged();
if (mAccessibilityEnabled) {
mTabSwitcherModeToolbar.onAccessibilityStatusChanged(mAccessibilityEnabled);
......@@ -210,4 +192,45 @@ class TabSwitcherModeTTCoordinatorPhone {
assert mTabSwitcherModeToolbar != null;
mTabSwitcherModeToolbar.setNewTabButtonHighlight(highlight);
}
/**
* Initialize {@link IncognitoTabModelObserver}, if the new tab variation is enabled. This
* function will initialize observer, if it is not initialized before.
*/
private void maybeInitializeIncognitoTabModelObserver() {
if (mTabModelSelector == null || mTabSwitcherModeToolbar == null
|| !isNewTabVariationEnabled() || mIncognitoTabModelObserver != null) {
return;
}
mIncognitoTabModelObserver = new IncognitoTabModelObserver() {
@Override
public void wasFirstTabCreated() {
if (mTabSwitcherModeToolbar != null) {
mTabSwitcherModeToolbar.onIncognitoTabsExistenceChanged(true);
}
}
@Override
public void didBecomeEmpty() {
if (mTabSwitcherModeToolbar != null) {
mTabSwitcherModeToolbar.onIncognitoTabsExistenceChanged(false);
}
}
};
mTabModelSelector.addIncognitoTabModelObserver(mIncognitoTabModelObserver);
}
/**
* Update incognito logo visibility on toolbar, if the new tab variation is enabled.
*/
private void maybeNotifyOnIncognitoTabsExistenceChanged() {
if (mTabModelSelector == null || mTabSwitcherModeToolbar == null
|| !isNewTabVariationEnabled()) {
return;
}
boolean doesExist = mTabModelSelector.getModel(true).getCount() != 0;
mTabSwitcherModeToolbar.onIncognitoTabsExistenceChanged(doesExist);
}
}
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