[M114 Migration] Apply important patches that fixed stability crashes reported on... 50/301850/2
authorNikhil Shingne <n.shingne@samsung.com>
Fri, 24 Nov 2023 11:55:16 +0000 (17:25 +0530)
committerDae-Hyun Ko <dhyuna.ko@samsung.com>
Mon, 27 Nov 2023 05:01:19 +0000 (05:01 +0000)
References: https://review.tizen.org/gerrit/292705

Change-Id: I0f9f18efa2729497cef84235297513184de9fb94
Signed-off-by: Nikhil Shingne <n.shingne@samsung.com>
tizen_src/chromium_impl/content/browser/renderer_host/rwhv_aura_offscreen_helper_efl.cc
tizen_src/chromium_impl/ui/ozone/platform/efl/efl_window.cc
tizen_src/ewk/efl_integration/content_browser_client_efl.cc
tizen_src/ewk/efl_integration/content_browser_client_efl.h
tizen_src/ewk/efl_integration/eweb_view.cc

index de89c51..fe9d8c9 100644 (file)
@@ -169,18 +169,26 @@ RWHVAuraOffscreenHelperEfl::~RWHVAuraOffscreenHelperEfl() {
     if (!MakeCurrent())
       LOG(WARNING) << "Failed to bind gl context";
     evas_object_image_native_surface_set(content_image_, nullptr);
+    evas_object_image_pixels_get_callback_set(content_image_, nullptr, nullptr);
     evas_gl_surface_destroy(evas_gl_, evas_gl_surface_);
+    evas_gl_surface_ = nullptr;
   }
 
   if (!ClearCurrent())
     LOG(WARNING) << "Failed to unbind gl context";
 
-  if (evas_gl_context_)
+  if (evas_gl_context_) {
     evas_gl_context_destroy(evas_gl_, evas_gl_context_);
-  if (evas_gl_config_)
+    evas_gl_context_ = nullptr;
+  }
+  if (evas_gl_config_) {
     evas_gl_config_free(evas_gl_config_);
-  if (evas_gl_)
+    evas_gl_config_ = nullptr;
+  }
+  if (evas_gl_) {
     evas_gl_free(evas_gl_);
+    evas_gl_ = nullptr;
+  }
 
   elm_object_part_content_unset(content_image_elm_host_, "overlay");
   evas_object_event_callback_del(content_image_, EVAS_CALLBACK_FOCUS_IN,
@@ -587,10 +595,14 @@ void RWHVAuraOffscreenHelperEfl::OnFocusOut(void* data,
   if (!window_host || !window_host->window())
     return;
 
-  aura::Window* focused_window =
-      aura::client::GetFocusClient(window_host->window())->GetFocusedWindow();
-  if (focused_window)
-    focused_window->LostFocus();
+  aura::client::FocusClient* focus_client =
+      aura::client::GetFocusClient(window_host->window());
+  if (focus_client) {
+    aura::Window* focused_window = focus_client->GetFocusedWindow();
+
+    if (focused_window)
+      focused_window->LostFocus();
+  }
 
   if (IsMobileProfile() && thiz->GetSelectionController()) {
     thiz->GetSelectionController()->HideHandleAndContextMenu();
index 8e63354..bf9c371 100644 (file)
@@ -43,6 +43,9 @@ EflWindow::EflWindow(PlatformWindowDelegate* delegate,
 EflWindow::~EflWindow() {
   PlatformEventSource::GetInstance()->RemovePlatformEventDispatcher(this);
 
+  if (EflWindow* window = window_manager_->GetWindow(native_view_))
+    window_manager_->RemoveWindow(native_view_);
+
   if (base::CommandLine::ForCurrentProcess()->HasSwitch(
           switches::kEnableOffscreenRendering))
     return;
index bf216cd..12cbceb 100644 (file)
@@ -236,7 +236,6 @@ void AcceptLanguagesHelper::AddAcceptLangsChangedCallback(
 
 void AcceptLanguagesHelper::RemoveAcceptLangsChangedCallback(
     AcceptLangsChangedCallback callback) {
-#if !defined(EWK_BRINGUP)  // FIXME: m94 bringup
   for (size_t i = 0; i < accept_langs_changed_callbacks_.size(); ++i) {
     if (accept_langs_changed_callbacks_[i] == callback) {
       accept_langs_changed_callbacks_.erase(
@@ -244,7 +243,6 @@ void AcceptLanguagesHelper::RemoveAcceptLangsChangedCallback(
       return;
     }
   }
-#endif
 }
 
 void AcceptLanguagesHelper::NotifyAcceptLangsChanged() {
index 5fc8fcb..7dc88be 100644 (file)
@@ -34,7 +34,7 @@ class WebContentsView;
 class AcceptLanguagesHelper {
  public:
   using AcceptLangsChangedCallback =
-      base::OnceCallback<void(const std::string&)>;
+      base::RepeatingCallback<void(const std::string&)>;
   AcceptLanguagesHelper();
   ~AcceptLanguagesHelper();
 
index 78bcf6f..55d8ddf 100644 (file)
@@ -433,10 +433,9 @@ void EWebView::Initialize() {
       content::GetContentClientExport()->browser());
   // Initialize accept languages
   SyncAcceptLanguages(cbce->GetAcceptLangs(nullptr));
-  accept_langs_changed_callback_ =
-      base::BindOnce(&EWebView::SyncAcceptLanguages, base::Unretained(this));
-  cbce->AddAcceptLangsChangedCallback(
-      std::move(accept_langs_changed_callback_));
+  accept_langs_changed_callback_ = base::BindRepeating(
+      &EWebView::SyncAcceptLanguages, base::Unretained(this));
+  cbce->AddAcceptLangsChangedCallback(accept_langs_changed_callback_);
 
   // If EWebView is created by window.open, RenderView is already created
   // before initializing WebContents. So we should manually invoke
@@ -451,10 +450,7 @@ EWebView::~EWebView() {
   LOG(INFO) << "EWebView: " << this;
   auto cbce = static_cast<ContentBrowserClientEfl*>(
       content::GetContentClientExport()->browser());
-#if !defined(EWK_BRINGUP)  // FIXME: m94 bringup
-  cbce->RemoveAcceptLangsChangedCallback(
-      std::move(accept_langs_changed_callback_));
-#endif
+  cbce->RemoveAcceptLangsChangedCallback(accept_langs_changed_callback_);
 #if defined(TIZEN_PEPPER_EXTENSIONS)
   UnregisterPepperExtensionDelegate();
 #endif