[TabGroups] Fix crash when restoring grouped tab in app like browsers
The crash happens when a grouped tab is restored into a browser that does not support tab groups. In this scenario, we will touch multiple different kinds of CHECKS / nullptr dereferences which will crash the browser. Changes: - CHECK TabGroupModel, TabStripModel, and TabGroup have values before use in BrowserLiveTabContext::SetVisualDataForGroup and BrowserLiveTabContext::GetVisualDataForGroup - Restore the grouped tab as an ungrouped tab if there is no TabGroupModel for the browser - Adds a regression test for this specific scenario Change-Id: I0230b7a7c86c31c77740488ce8959de77bd20865 Bug: 368139715 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5888488 Commit-Queue: Darryl James <dljames@chromium.org> Reviewed-by: Eshwar Stalin <estalin@chromium.org> Reviewed-by: Steven Luong <stluong@chromium.org> Cr-Commit-Position: refs/heads/main@{#1360585}
This commit is contained in:

committed by
Chromium LUCI CQ

parent
8bfc04ecb8
commit
0d930717b9
chrome/browser
components/sessions/core
@ -10,6 +10,7 @@
|
||||
#include <vector>
|
||||
|
||||
#include "base/compiler_specific.h"
|
||||
#include "base/gtest_prod_util.h"
|
||||
#include "components/prefs/pref_change_registrar.h"
|
||||
#include "components/sessions/core/sessions_export.h"
|
||||
#include "components/sessions/core/tab_restore_service.h"
|
||||
@ -65,6 +66,8 @@ class SESSIONS_EXPORT TabRestoreServiceImpl : public TabRestoreService {
|
||||
|
||||
private:
|
||||
friend class ::TabRestoreServiceImplTest;
|
||||
FRIEND_TEST_ALL_PREFIXES(TabRestoreTest,
|
||||
RestoreGroupInBrowserThatDoesNotSupportGroups);
|
||||
|
||||
class PersistenceDelegate;
|
||||
void UpdatePersistenceDelegate();
|
||||
|
Reference in New Issue
Block a user