From 5b51c703fe4fd0e84e1d275bf2a6b5bedab07315 Mon Sep 17 00:00:00 2001 From: "huayong.xu" Date: Mon, 10 May 2021 18:21:10 +0800 Subject: [PATCH] [Tizen] Fix crash issue when favicon is null. When favicon of web page is null, it would cause crash. This patch is to add a check if pixel data is null or not. Change-Id: I2c3d1f90a8195affa92a76a47b1228dad43c78a4 --- automated-tests/src/dali-toolkit/utc-Dali-WebView.cpp | 4 ++-- dali-toolkit/devel-api/controls/web-view/web-view.cpp | 2 +- dali-toolkit/devel-api/controls/web-view/web-view.h | 6 +++--- .../internal/controls/web-view/web-view-impl.cpp | 17 ++++++++++------- dali-toolkit/internal/controls/web-view/web-view-impl.h | 7 +++---- 5 files changed, 19 insertions(+), 17 deletions(-) mode change 100644 => 100755 automated-tests/src/dali-toolkit/utc-Dali-WebView.cpp diff --git a/automated-tests/src/dali-toolkit/utc-Dali-WebView.cpp b/automated-tests/src/dali-toolkit/utc-Dali-WebView.cpp old mode 100644 new mode 100755 index 28863cf..601aa56 --- a/automated-tests/src/dali-toolkit/utc-Dali-WebView.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-WebView.cpp @@ -484,9 +484,9 @@ int UtcDaliWebViewPropertyTitleFavicon(void) DALI_TEST_EQUALS( output, testValue, TEST_LOCATION ); // Check default value of favicon - Dali::Toolkit::ImageView* favicon = &view.GetFavicon(); + Dali::Toolkit::ImageView favicon = view.GetFavicon(); DALI_TEST_CHECK( favicon ); - Dali::Vector3 iconsize = favicon->GetProperty< Vector3 >( Dali::Actor::Property::SIZE ); + Dali::Vector3 iconsize = favicon.GetProperty< Vector3 >( Dali::Actor::Property::SIZE ); DALI_TEST_CHECK( ( int )iconsize.width == 2 && ( int )iconsize.height == 2 ); END_TEST; diff --git a/dali-toolkit/devel-api/controls/web-view/web-view.cpp b/dali-toolkit/devel-api/controls/web-view/web-view.cpp index a0672ae..6004a50 100755 --- a/dali-toolkit/devel-api/controls/web-view/web-view.cpp +++ b/dali-toolkit/devel-api/controls/web-view/web-view.cpp @@ -89,7 +89,7 @@ Dali::Toolkit::WebBackForwardList* WebView::GetBackForwardList() const return Dali::Toolkit::GetImpl( *this ).GetBackForwardList(); } -Dali::Toolkit::ImageView& WebView::GetFavicon() +Dali::Toolkit::ImageView WebView::GetFavicon() const { return Dali::Toolkit::GetImpl( *this ).GetFavicon(); } diff --git a/dali-toolkit/devel-api/controls/web-view/web-view.h b/dali-toolkit/devel-api/controls/web-view/web-view.h index 8bc6cde..efc1229 100755 --- a/dali-toolkit/devel-api/controls/web-view/web-view.h +++ b/dali-toolkit/devel-api/controls/web-view/web-view.h @@ -242,11 +242,11 @@ public: Dali::Toolkit::WebBackForwardList* GetBackForwardList() const; /** - * @brief Get Favicon of web page. + * @brief Get favicon of web page. * - * @return Handle to a fav icon + * @return Handle to a favicon */ - Dali::Toolkit::ImageView& GetFavicon(); + Dali::Toolkit::ImageView GetFavicon() const; /** * @brief Loads a web page based on a given URL. diff --git a/dali-toolkit/internal/controls/web-view/web-view-impl.cpp b/dali-toolkit/internal/controls/web-view/web-view-impl.cpp index c0087b2..44e825b 100755 --- a/dali-toolkit/internal/controls/web-view/web-view-impl.cpp +++ b/dali-toolkit/internal/controls/web-view/web-view-impl.cpp @@ -261,17 +261,20 @@ Dali::Toolkit::WebBackForwardList* WebView::GetBackForwardList() const return mWebBackForwardList.get(); } -Dali::Toolkit::ImageView& WebView::GetFavicon() +Dali::Toolkit::ImageView WebView::GetFavicon() const { - if ( mWebEngine ) + Dali::Toolkit::ImageView faviconView; + if(mWebEngine) { Dali::PixelData pixelData = mWebEngine.GetFavicon(); - std::string url = Dali::Toolkit::Image::GenerateUrl( pixelData ); - mFaviconView = Dali::Toolkit::ImageView::New( url ); - mFaviconView.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS ); - mFaviconView.SetProperty( Dali::Actor::Property::SIZE, Vector2( pixelData.GetWidth(), pixelData.GetHeight() ) ); + if(pixelData) + { + std::string url = Dali::Toolkit::Image::GenerateUrl(pixelData); + faviconView = Dali::Toolkit::ImageView::New(url); + faviconView.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS); + } } - return mFaviconView; + return faviconView; } void WebView::LoadUrl( const std::string& url ) diff --git a/dali-toolkit/internal/controls/web-view/web-view-impl.h b/dali-toolkit/internal/controls/web-view/web-view-impl.h index 643ed76..9b5f29c 100755 --- a/dali-toolkit/internal/controls/web-view/web-view-impl.h +++ b/dali-toolkit/internal/controls/web-view/web-view-impl.h @@ -97,11 +97,11 @@ public: static Toolkit::WebView New( int argc, char** argv ); /** - * @brief Get Favicon of web page. + * @brief Get favicon of web page. * - * @return Handle to a fav icon + * @return Handle to a favicon */ - Dali::Toolkit::ImageView& GetFavicon(); + Dali::Toolkit::ImageView GetFavicon() const; /** * @copydoc Dali::Toolkit::WebView::LoadUrl() @@ -382,7 +382,6 @@ private: std::unique_ptr mWebCookieManager; std::unique_ptr mWebSettings; std::unique_ptr mWebBackForwardList; - Dali::Toolkit::ImageView mFaviconView; Dali::PropertyNotification mPositionUpdateNotification; Dali::PropertyNotification mSizeUpdateNotification; -- 2.7.4