Fixed closing incognito tab 33/50533/3
authorAlbert Malewski <a.malewski@samsung.com>
Thu, 29 Oct 2015 12:10:01 +0000 (13:10 +0100)
committerAlbert Malewski <a.malewski@samsung.com>
Thu, 29 Oct 2015 12:35:49 +0000 (05:35 -0700)
[Issue]    https://bugs.tizen.org/jira/browse/TT-239
[Problem]  Browser crashes when tries to close incognito tab.
[Cause]    Ewk_Context API was used incorrectly.
[Solution] Moved creation of m_ewkContext from contructor to init().
[Verify]   Open Incognito Tab > Tab Manager > Close Incognito Tab.

Change-Id: I117939d1f69a1f9a71a13ae3b2dea9b83a70e0e8

services/WebKitEngineService/WebView.cpp

index 988d24d..2c4b4bc 100644 (file)
@@ -67,7 +67,7 @@ WebView::WebView(Evas_Object * obj, TabId tabId, bool incognitoMode)
     : m_parent(obj)
     , m_tabId(tabId)
     , m_ewkView(nullptr)
-    , m_ewkContext(ewk_context_new())
+    , m_ewkContext(nullptr)
     , m_title(std::string())
     , m_isLoading(false)
     , m_loadError(false)
@@ -85,21 +85,19 @@ WebView::~WebView()
         unregisterCallbacks();
     }
 
-    ewk_context_delete(m_ewkContext);
+    ewk_context_unref(m_ewkContext);
 }
 
 void WebView::init(bool desktopMode, Evas_Object*)
 {
 #if defined(USE_EWEBKIT)
-    M_ASSERT(m_ewkContext);
-
     m_ewkView = m_private ? ewk_view_add_in_incognito_mode(evas_object_evas_get(m_parent)) :
-                            ewk_view_add_with_context(evas_object_evas_get(m_parent), m_ewkContext);
+                            ewk_view_add_with_context(evas_object_evas_get(m_parent), ewk_context_new());
 
-    Ewk_Context *context = ewk_view_context_get(m_ewkView);
-    if (context)
-        m_private ? ewk_cookie_manager_accept_policy_set(ewk_context_cookie_manager_get(context), EWK_COOKIE_ACCEPT_POLICY_NEVER) :
-                    ewk_cookie_manager_accept_policy_set(ewk_context_cookie_manager_get(context), EWK_COOKIE_ACCEPT_POLICY_ALWAYS);
+    m_ewkContext = ewk_view_context_get(m_ewkView);
+    if (m_ewkContext)
+        m_private ? ewk_cookie_manager_accept_policy_set(ewk_context_cookie_manager_get(m_ewkContext), EWK_COOKIE_ACCEPT_POLICY_NEVER) :
+                    ewk_cookie_manager_accept_policy_set(ewk_context_cookie_manager_get(m_ewkContext), EWK_COOKIE_ACCEPT_POLICY_ALWAYS);
 
     evas_object_data_set(m_ewkView, "_container", this);
     BROWSER_LOGD("%s:%d %s self=%p", __FILE__, __LINE__, __func__, this);