From 40472944d5f376186a6954582d8ff1cc7718c6e3 Mon Sep 17 00:00:00 2001 From: leerang song Date: Thu, 25 Jul 2013 21:52:41 +0900 Subject: [PATCH] Fix the crash caused by empty webview [Issue] N/A [Problem] When updating dynamicbox, web-provider is crashed [Cause] N/A [Solution] when accessing empty webview to function, false return. Change-Id: I777663417953d7881b4f392fb3a44edbf282e65d --- src/Core/Service/MessageManager.cpp | 4 +++- src/Core/View/WebView.cpp | 3 +++ src/Plugin/AppBoxPlugin/AppBoxRenderView.cpp | 11 +++++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) mode change 100644 => 100755 src/Core/Service/MessageManager.cpp diff --git a/src/Core/Service/MessageManager.cpp b/src/Core/Service/MessageManager.cpp old mode 100644 new mode 100755 index 501480f..29344dd --- a/src/Core/Service/MessageManager.cpp +++ b/src/Core/Service/MessageManager.cpp @@ -46,7 +46,9 @@ bool MessageManager::send(Evas_Object* webview, ReceiverType receiver, std::stri LogD("enter"); std::string eventName; - + if(!webview) { + return false; + } // set message event name triggered by receiver switch (receiver) { case TO_BOX: diff --git a/src/Core/View/WebView.cpp b/src/Core/View/WebView.cpp index 760ac62..f580c6c 100755 --- a/src/Core/View/WebView.cpp +++ b/src/Core/View/WebView.cpp @@ -117,6 +117,9 @@ bool WebView::hide() if (!unsetBasicSetting(m_topWebview)) { return false; } + if(!m_topWebview) { + return false; + } evas_object_del(m_topWebview); m_topWebview = NULL; diff --git a/src/Plugin/AppBoxPlugin/AppBoxRenderView.cpp b/src/Plugin/AppBoxPlugin/AppBoxRenderView.cpp index d951a1d..a7c3939 100755 --- a/src/Plugin/AppBoxPlugin/AppBoxRenderView.cpp +++ b/src/Plugin/AppBoxPlugin/AppBoxRenderView.cpp @@ -430,6 +430,7 @@ void AppBoxRenderView::executeScriptCallback( Evas_Object* webview, const char* result, void* data) { LogD("enter"); + std::string resultStr(result ? result : "null"); LogD("result: %s", resultStr.c_str()); } @@ -437,6 +438,9 @@ void AppBoxRenderView::executeScriptCallback( void AppBoxRenderView::startLoadCallback(Evas_Object* webview) { LogD("enter"); + if(!webview) { + return; + } // execute injection for creating js objects std::ifstream jsFile(injectionFile); std::string script((std::istreambuf_iterator(jsFile)), @@ -449,6 +453,10 @@ void AppBoxRenderView::startLoadCallback(Evas_Object* webview) void AppBoxRenderView::finishLoadCallback(Evas_Object* webview) { LogD("enter"); + if (!webview) { + return; + } + ewk_view_visibility_set(webview, EINA_TRUE); if (!m_pdHelper) { @@ -487,6 +495,9 @@ void AppBoxRenderView::createWindowBeforeCallback(Evas** canvas, Evas_Object* pa void AppBoxRenderView::createWindowAfterCallback(Evas_Object* parent, Evas_Object* child) { LogD("enter"); + if (!parent) { + return; + } if (m_pdHelper) { Evas* parentCanvas = evas_object_evas_get(parent); -- 2.7.4