From 99b64b8ae3f78a5a48b9c30d0da3a2d590f25f5b Mon Sep 17 00:00:00 2001 From: "jaekuk, lee" Date: Tue, 4 Sep 2018 19:23:17 +0900 Subject: [PATCH] Fixed crash issue occurred when terminating App using HOME Key Change-Id: Iecdadb9e2baf5c41b8389576dc7103ac63534b9a Signed-off-by: jaekuk, lee --- runtime/browser/web_application.cc | 26 +++++++++++++++----------- runtime/browser/web_application.h | 2 +- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/runtime/browser/web_application.cc b/runtime/browser/web_application.cc index 9039ca7..2b8eb4a 100755 --- a/runtime/browser/web_application.cc +++ b/runtime/browser/web_application.cc @@ -775,7 +775,7 @@ void WebApplication::OnCreatedNewWebView(WebView* /*view*/, WebView* new_view) { vc_webview_->vc_webview_set_view(new_view->evas_object()); } -void WebApplication::RemoveWebViewFromStack(WebView* view) { +void WebApplication::RemoveWebViewFromStack(WebView* view, bool is_closed_webview_called) { if (view_stack_.size() == 0) return; @@ -815,13 +815,17 @@ void WebApplication::RemoveWebViewFromStack(WebView* view) { vc_webview_->vc_webview_set_view(view_stack_.front()->evas_object()); } - // Delete after the callback context(for ewk view) was not used - ecore_idler_add([](void* view) { - WebView* obj = static_cast(view); - delete obj; - return EINA_FALSE; - }, - view); + if (is_closed_webview_called) + delete view; + else { + // Delete after the callback context(for ewk view) was not used + ecore_idler_add([](void* view) { + WebView* obj = static_cast(view); + delete obj; + return EINA_FALSE; + }, + view); + } } Eina_Bool WebApplication::CheckPluginSession(void* user_data) @@ -842,7 +846,7 @@ Eina_Bool WebApplication::CheckPluginSession(void* user_data) void WebApplication::OnClosedWebView(WebView* view) { // Reply to javascript dialog for preventing freeze issue. view->ReplyToJavascriptDialog(); - RemoveWebViewFromStack(view); + RemoveWebViewFromStack(view, true); #if defined(TIZEN_PRODUCT_TV) LOGGER(DEBUG) << "plugin_session_count : " << @@ -1011,7 +1015,7 @@ void WebApplication::OnHardwareKey(WebView* view, const std::string& keyname) { LOGGER(DEBUG) << "Terminate"; Terminate(); } else { - RemoveWebViewFromStack(view_stack_.front()); + RemoveWebViewFromStack(view_stack_.front(), false); } } } @@ -1031,7 +1035,7 @@ void WebApplication::OnHardwareKey(WebView* view, const std::string& keyname) { LOGGER(DEBUG) << "Terminate"; Terminate(); } else { - RemoveWebViewFromStack(view_stack_.front()); + RemoveWebViewFromStack(view_stack_.front(), false); } } diff --git a/runtime/browser/web_application.h b/runtime/browser/web_application.h index a724a09..af4fce2 100755 --- a/runtime/browser/web_application.h +++ b/runtime/browser/web_application.h @@ -125,7 +125,7 @@ class WebApplication : public WebView::EventListener { void LaunchInspector(common::AppControl* appcontrol); void SetupWebView(WebView* view); void SetupWebViewCompatibilitySettings(WebView* view); - void RemoveWebViewFromStack(WebView* view); + void RemoveWebViewFromStack(WebView* view, bool is_closed_webview_called); void SetupTizenVersion(); bool tizenWebKitCompatibilityEnabled() const; -- 2.7.4