Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Unverified Commit 27190067 authored by Carmelo Messina's avatar Carmelo Messina
Browse files

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

parent a5159d2f
Loading
Loading
Loading
Loading
+9 −5
Original line number Diff line number Diff line
@@ -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,