From 271900671db643de04aa9f909f0dcc3415c8b827 Mon Sep 17 00:00:00 2001 From: Carmelo Messina Date: Thu, 9 Apr 2026 17:17:45 +0200 Subject: [PATCH] Experimental support for extensions on Android: fix dangling raw_ptr android code --- ...imental-support-for-extensions-on-Android.patch | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/build/patches/Experimental-support-for-extensions-on-Android.patch b/build/patches/Experimental-support-for-extensions-on-Android.patch index 46d04a07..7e8e506a 100644 --- a/build/patches/Experimental-support-for-extensions-on-Android.patch +++ b/build/patches/Experimental-support-for-extensions-on-Android.patch @@ -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(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,