[Tizen] Fix crash issue when favicon is null. 89/258089/4
authorhuayong.xu <huayong.xu@samsung.com>
Mon, 10 May 2021 10:21:10 +0000 (18:21 +0800)
committerhuayong.xu <huayong.xu@samsung.com>
Mon, 10 May 2021 10:28:15 +0000 (18:28 +0800)
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 [changed mode: 0644->0755]
dali-toolkit/devel-api/controls/web-view/web-view.cpp
dali-toolkit/devel-api/controls/web-view/web-view.h
dali-toolkit/internal/controls/web-view/web-view-impl.cpp
dali-toolkit/internal/controls/web-view/web-view-impl.h

old mode 100644 (file)
new mode 100755 (executable)
index 28863cf..601aa56
@@ -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;
index a0672ae..6004a50 100755 (executable)
@@ -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();
 }
index 8bc6cde..efc1229 100755 (executable)
@@ -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.
index c0087b2..44e825b 100755 (executable)
@@ -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 )
index 643ed76..9b5f29c 100755 (executable)
@@ -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<Dali::Toolkit::WebCookieManager>       mWebCookieManager;
   std::unique_ptr<Dali::Toolkit::WebSettings>            mWebSettings;
   std::unique_ptr<Dali::Toolkit::WebBackForwardList>     mWebBackForwardList;
-  Dali::Toolkit::ImageView mFaviconView;
 
   Dali::PropertyNotification                             mPositionUpdateNotification;
   Dali::PropertyNotification                             mSizeUpdateNotification;