Experimental support for extensions on Android: fix dangling raw_ptr android code

This commit is contained in:
Carmelo Messina
2026-04-09 17:17:45 +02:00
parent a5159d2fd6
commit 271900671d
@@ -65,7 +65,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../extensions/api/identity/web_auth_flow.h | 4 +-
.../browser/extensions/api/tabs/tabs_api.cc | 3 +
.../extensions/api/tabs/tabs_event_router.cc | 22 ++++++-
.../browser_extension_window_controller.cc | 10 ++-
.../browser_extension_window_controller.cc | 14 +++-
.../browser_extension_window_controller.h | 6 +-
.../extensions/extension_management.cc | 8 ++-
.../browser/extensions/extension_management.h | 2 +-
@@ -202,7 +202,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
ui/webui/resources/cr_elements/BUILD.gn | 2 +-
.../cr_elements/cr_toolbar/cr_toolbar.css | 3 +
ui/webui/resources/css/BUILD.gn | 2 +-
190 files changed, 631 insertions(+), 308 deletions(-)
190 files changed, 635 insertions(+), 308 deletions(-)
create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Enable-extensions-Android.grdp
create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Extensions-Android.grdp
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Extensions-Android.inc
@@ -1306,7 +1306,7 @@ diff --git a/chrome/browser/extensions/api/tabs/tabs_event_router.cc b/chrome/br
diff --git a/chrome/browser/extensions/browser_extension_window_controller.cc b/chrome/browser/extensions/browser_extension_window_controller.cc
--- a/chrome/browser/extensions/browser_extension_window_controller.cc
+++ b/chrome/browser/extensions/browser_extension_window_controller.cc
@@ -105,11 +105,12 @@ BrowserExtensionWindowController::BrowserExtensionWindowController(
@@ -105,11 +105,14 @@ BrowserExtensionWindowController::BrowserExtensionWindowController(
#if !BUILDFLAG(IS_ANDROID)
window_(CHECK_DEREF(browser->GetBrowserForMigrationOnly()->window())),
#endif // !BUILDFLAG(IS_ANDROID)
@@ -1316,23 +1316,27 @@ diff --git a/chrome/browser/extensions/browser_extension_window_controller.cc b/
window_type_(GetTabsWindowType(browser)),
scoped_data_holder_(browser->GetUnownedUserDataHost(), *this) {
WindowControllerList::GetInstance()->AddExtensionWindow(this);
+#if BUILDFLAG(IS_ANDROID)
+ tab_list_->AddTabListInterfaceObserver(this);
+#endif
}
BrowserExtensionWindowController::~BrowserExtensionWindowController() {
@@ -122,6 +123,11 @@ BrowserExtensionWindowController* BrowserExtensionWindowController::From(
@@ -122,6 +125,13 @@ BrowserExtensionWindowController* BrowserExtensionWindowController::From(
browser_window_interface->GetUnownedUserDataHost());
}
+void BrowserExtensionWindowController::OnTabListDestroyed(TabListInterface& tab_list) {
+#if BUILDFLAG(IS_ANDROID)
+ tab_list_->RemoveTabListInterfaceObserver(this);
+#endif
+ tab_list_ = nullptr;
+}
+
int BrowserExtensionWindowController::GetWindowId() const {
return static_cast<int>(session_id_.id());
}
@@ -268,7 +274,7 @@ base::ListValue BrowserExtensionWindowController::CreateTabList(
@@ -268,7 +278,7 @@ base::ListValue BrowserExtensionWindowController::CreateTabList(
ExtensionTabUtil::GetScrubTabBehavior(extension, context, web_contents);
tab_list.Append(
ExtensionTabUtil::CreateTabObject(web_contents, scrub_tab_behavior,