Skip to content

Commit f91a38e

Browse files
Guard ChromeActivity.getTabModelSelector with areTabModelsInitialized (#26724)
* Use getTabModelSelectorSupplier instead of deprecated getTabModelSelector Fixes crash reported from GP dev console. Fixes brave/brave-browser#42319
1 parent 4db883c commit f91a38e

File tree

3 files changed

+43
-13
lines changed

3 files changed

+43
-13
lines changed

android/java/org/chromium/chrome/browser/BraveRewardsHelper.java

+16-7
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,15 @@
3434

3535
import org.chromium.base.Callback;
3636
import org.chromium.base.ContextUtils;
37+
import org.chromium.base.supplier.ObservableSupplier;
3738
import org.chromium.chrome.R;
3839
import org.chromium.chrome.browser.app.BraveActivity;
3940
import org.chromium.chrome.browser.customtabs.CustomTabActivity;
4041
import org.chromium.chrome.browser.preferences.ChromeSharedPreferences;
4142
import org.chromium.chrome.browser.profiles.Profile;
4243
import org.chromium.chrome.browser.profiles.ProfileManager;
4344
import org.chromium.chrome.browser.tab.Tab;
45+
import org.chromium.chrome.browser.tabmodel.TabModelSelector;
4446
import org.chromium.components.browser_ui.widget.RoundedIconGenerator;
4547
import org.chromium.components.favicon.IconType;
4648
import org.chromium.components.favicon.LargeIconBridge;
@@ -428,13 +430,20 @@ public static String getCurrentYear(Resources resources) {
428430
return Integer.toString(currentTime.get(Calendar.YEAR));
429431
}
430432

431-
public static Tab currentActiveChromeTabbedActivityTab() {
432-
ChromeTabbedActivity activity = BraveRewardsHelper.getChromeTabbedActivity();
433-
if (activity == null || activity.getTabModelSelector() == null) {
434-
return null;
435-
}
436-
return activity.getActivityTab();
437-
}
433+
public static Tab currentActiveChromeTabbedActivityTab() {
434+
ChromeTabbedActivity activity = BraveRewardsHelper.getChromeTabbedActivity();
435+
if (activity == null) {
436+
return null;
437+
}
438+
439+
ObservableSupplier<TabModelSelector> supplier = activity.getTabModelSelectorSupplier();
440+
TabModelSelector selector = supplier.get();
441+
if (selector == null) {
442+
return null;
443+
}
444+
445+
return activity.getActivityTab();
446+
}
438447

439448
/**
440449
* @param fadeout: can be null

android/java/org/chromium/chrome/browser/crypto_wallet/util/Utils.java

+9-1
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@
5353
import org.chromium.base.CommandLine;
5454
import org.chromium.base.ContextUtils;
5555
import org.chromium.base.Log;
56+
import org.chromium.base.supplier.ObservableSupplier;
5657
import org.chromium.base.task.PostTask;
5758
import org.chromium.base.task.TaskTraits;
5859
import org.chromium.brave_wallet.mojom.AccountId;
@@ -77,6 +78,7 @@
7778
import org.chromium.chrome.browser.crypto_wallet.model.AccountSelectorItemModel;
7879
import org.chromium.chrome.browser.profiles.Profile;
7980
import org.chromium.chrome.browser.profiles.ProfileManager;
81+
import org.chromium.chrome.browser.tabmodel.TabModelSelector;
8082
import org.chromium.chrome.browser.util.TabUtils;
8183
import org.chromium.ui.text.NoUnderlineClickableSpan;
8284
import org.chromium.ui.widget.Toast;
@@ -1222,7 +1224,13 @@ public static Profile getProfile(boolean isIncognito) {
12221224
return ProfileManager.getLastUsedRegularProfile(); // Last resort
12231225
}
12241226

1225-
return chromeActivity.getTabModelSelector().getModel(isIncognito).getProfile();
1227+
ObservableSupplier<TabModelSelector> supplier =
1228+
chromeActivity.getTabModelSelectorSupplier();
1229+
TabModelSelector selector = supplier.get();
1230+
if (selector == null) {
1231+
return ProfileManager.getLastUsedRegularProfile();
1232+
}
1233+
return selector.getModel(isIncognito).getProfile();
12261234
}
12271235

12281236
public static String formatErc721TokenTitle(String title, String id) {

android/java/org/chromium/chrome/browser/util/TabUtils.java

+18-5
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import org.chromium.chrome.browser.night_mode.GlobalNightModeStateProviderHolder;
4040
import org.chromium.chrome.browser.tab.Tab;
4141
import org.chromium.chrome.browser.tab.TabLaunchType;
42+
import org.chromium.chrome.browser.tabmodel.TabModelSelector;
4243
import org.chromium.chrome.browser.tasks.tab_management.BraveTabUiFeatureUtilities;
4344
import org.chromium.chrome.browser.toolbar.LocationBarModel;
4445
import org.chromium.components.bookmarks.BookmarkId;
@@ -194,7 +195,13 @@ public static void openNewTab() {
194195

195196
private static void openNewTab(BraveActivity braveActivity, boolean isIncognito) {
196197
if (braveActivity == null) return;
197-
braveActivity.getTabModelSelector().getModel(isIncognito).commitAllTabClosures();
198+
199+
ObservableSupplier<TabModelSelector> supplier = braveActivity.getTabModelSelectorSupplier();
200+
TabModelSelector selector = supplier.get();
201+
if (selector == null) {
202+
return;
203+
}
204+
selector.getModel(isIncognito).commitAllTabClosures();
198205
braveActivity.getTabCreator(isIncognito).launchNtp();
199206
}
200207

@@ -210,13 +217,19 @@ public static void openUrlInNewTab(boolean isIncognito, String url) {
210217
public static void openUrlInNewTabInBackground(boolean isIncognito, String url) {
211218
try {
212219
BraveActivity braveActivity = BraveActivity.getBraveActivity();
213-
if (braveActivity.getTabModelSelector() != null
214-
&& braveActivity.getActivityTab() != null) {
215-
braveActivity.getTabModelSelector().openNewTab(new LoadUrlParams(url),
220+
221+
ObservableSupplier<TabModelSelector> supplier =
222+
braveActivity.getTabModelSelectorSupplier();
223+
TabModelSelector selector = supplier.get();
224+
225+
if (selector != null && braveActivity.getActivityTab() != null) {
226+
selector.openNewTab(
227+
new LoadUrlParams(url),
216228
BraveTabUiFeatureUtilities.isBraveTabGroupsEnabled()
217229
? TabLaunchType.FROM_LONGPRESS_BACKGROUND_IN_GROUP
218230
: TabLaunchType.FROM_LONGPRESS_BACKGROUND,
219-
braveActivity.getActivityTab(), isIncognito);
231+
braveActivity.getActivityTab(),
232+
isIncognito);
220233
}
221234
} catch (BraveActivity.BraveActivityNotFoundException e) {
222235
Log.e(TAG, "openUrlInNewTabInBackground " + e);

0 commit comments

Comments
 (0)