Make method to get VisualUrl shorter. 13/304613/1
authorEunki, Hong <eunkiki.hong@samsung.com>
Mon, 22 Jan 2024 08:03:06 +0000 (17:03 +0900)
committerEunki, Hong <eunkiki.hong@samsung.com>
Mon, 22 Jan 2024 08:32:12 +0000 (17:32 +0900)
Let we allow to get only the last 20 character of URL name
when we don't need to print full URL.

Change-Id: Id7203bff84fdf61a7950cec1c79ebce48b1a9a43
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
automated-tests/src/dali-toolkit-internal/utc-Dali-VisualUrl.cpp
dali-toolkit/internal/image-loader/fast-track-loading-task.cpp
dali-toolkit/internal/image-loader/loading-task.cpp
dali-toolkit/internal/visuals/animated-vector-image/vector-animation-task.cpp
dali-toolkit/internal/visuals/image/image-visual.cpp
dali-toolkit/internal/visuals/svg/svg-task.cpp
dali-toolkit/internal/visuals/visual-url.cpp
dali-toolkit/internal/visuals/visual-url.h

index 3e5e8eb..f94764d 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2023 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2024 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 
 using namespace Dali::Toolkit::Internal;
 
+namespace
+{
+constexpr uint32_t URL_ELLIPSED_LENGTH = 20u;
+}
+
 int UtcDaliVisualUrlConstructor(void)
 {
   const char* url = "file://bar.org/foobar.gif";
@@ -519,4 +524,37 @@ int UtcDaliVisualUrlGetUrlHash(void)
   }
 
   END_TEST;
+}
+
+int UtcDaliVisualUrlGetEllipsedUrl(void)
+{
+  tet_infoline("UtcDaliVisualUrl GetEllipsedUrl");
+
+  std::string inputString;
+
+  // Test shot url is same as what input used.
+  for(uint32_t i = 0; i < URL_ELLIPSED_LENGTH + 3; ++i)
+  {
+    inputString.push_back('a');
+
+    VisualUrl visualUrl(inputString);
+
+    DALI_TEST_EQUALS(visualUrl.GetUrl(), inputString, TEST_LOCATION);
+    DALI_TEST_EQUALS(visualUrl.GetEllipsedUrl(), inputString, TEST_LOCATION);
+  }
+
+  for(uint32_t i = 0; i < 10; ++i)
+  {
+    inputString.push_back('0' + i);
+
+    std::string expectString = "..." + inputString.substr(inputString.length() - URL_ELLIPSED_LENGTH);
+
+    VisualUrl visualUrl(inputString);
+
+    DALI_TEST_EQUALS(visualUrl.GetUrl(), inputString, TEST_LOCATION);
+    DALI_TEST_CHECK(visualUrl.GetEllipsedUrl() != inputString);
+    DALI_TEST_EQUALS(visualUrl.GetEllipsedUrl(), expectString, TEST_LOCATION);
+  }
+
+  END_TEST;
 }
\ No newline at end of file
index 0f5f123..d2faacd 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2023 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2024 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -149,7 +149,7 @@ void FastTrackLoadingTask::Load()
   if(gTraceFilter && gTraceFilter->IsTraceEnabled())
   {
     std::ostringstream oss;
-    oss << "[url:" << mUrl.GetUrl() << "]";
+    oss << "[url:" << mUrl.GetEllipsedUrl() << "]";
     // DALI_TRACE_BEGIN(gTraceFilter, "DALI_IMAGE_FAST_TRACK_UPLOADING_TASK"); ///< TODO : Open it if we can control trace log level
     DALI_LOG_RELEASE_INFO("BEGIN: DALI_IMAGE_FAST_TRACK_UPLOADING_TASK %s", oss.str().c_str());
   }
@@ -227,7 +227,7 @@ void FastTrackLoadingTask::Load()
       oss << "size:" << mPixelData[0].GetWidth() << "x" << mPixelData[0].GetHeight() << " ";
       oss << "premult:" << mPremultiplied << " ";
     }
-    oss << "url:" << mUrl.GetUrl() << "]";
+    oss << "url:" << mUrl.GetEllipsedUrl() << "]";
     // DALI_TRACE_END(gTraceFilter, "DALI_IMAGE_FAST_TRACK_UPLOADING_TASK"); ///< TODO : Open it if we can control trace log level
     DALI_LOG_RELEASE_INFO("END: DALI_IMAGE_FAST_TRACK_UPLOADING_TASK %s", oss.str().c_str());
   }
index e26a927..43a994d 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2023 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2024 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -162,7 +162,7 @@ void LoadingTask::Process()
   if(gTraceFilter && gTraceFilter->IsTraceEnabled())
   {
     std::ostringstream oss;
-    oss << "[url:" << (!!(animatedImageLoading) ? animatedImageLoading.GetUrl() : url.GetUrl()) << "]";
+    oss << "[url:" << (!!(animatedImageLoading) ? animatedImageLoading.GetUrl() : url.GetEllipsedUrl()) << "]";
     // DALI_TRACE_BEGIN(gTraceFilter, "DALI_IMAGE_LOADING_TASK"); ///< TODO : Open it if we can control trace log level
     DALI_LOG_RELEASE_INFO("BEGIN: DALI_IMAGE_LOADING_TASK %s", oss.str().c_str());
   }
@@ -193,7 +193,7 @@ void LoadingTask::Process()
       oss << "size:" << pixelBuffers[0].GetWidth() << "x" << pixelBuffers[0].GetHeight() << " ";
       oss << "premult:" << pixelBuffers[0].IsAlphaPreMultiplied() << " ";
     }
-    oss << "url:" << (!!(animatedImageLoading) ? animatedImageLoading.GetUrl() : url.GetUrl()) << "]";
+    oss << "url:" << (!!(animatedImageLoading) ? animatedImageLoading.GetUrl() : url.GetEllipsedUrl()) << "]";
     // DALI_TRACE_END(gTraceFilter, "DALI_IMAGE_LOADING_TASK"); ///< TODO : Open it if we can control trace log level
     DALI_LOG_RELEASE_INFO("END: DALI_IMAGE_LOADING_TASK %s", oss.str().c_str());
   }
index 343e623..bb16e62 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2023 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2024 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -155,7 +155,7 @@ bool VectorAnimationTask::Load(bool synchronousLoading)
   if(gTraceFilter && gTraceFilter->IsTraceEnabled())
   {
     std::ostringstream oss;
-    oss << "[url:" << mImageUrl.GetUrl() << "]";
+    oss << "[url:" << mImageUrl.GetEllipsedUrl() << "]";
     // DALI_TRACE_BEGIN(gTraceFilter, "DALI_LOTTIE_LOADING_TASK"); ///< TODO : Open it if we can control trace log level
     DALI_LOG_RELEASE_INFO("BEGIN: DALI_LOTTIE_LOADING_TASK %s", oss.str().c_str());
   }
@@ -203,7 +203,7 @@ bool VectorAnimationTask::Load(bool synchronousLoading)
     if(gTraceFilter && gTraceFilter->IsTraceEnabled())
     {
       std::ostringstream oss;
-      oss << "[url:" << mImageUrl.GetUrl() << "]";
+      oss << "[url:" << mImageUrl.GetEllipsedUrl() << "]";
       // DALI_TRACE_END(gTraceFilter, "DALI_LOTTIE_LOADING_TASK"); ///< TODO : Open it if we can control trace log level
       DALI_LOG_RELEASE_INFO("END: DALI_LOTTIE_LOADING_TASK %s", oss.str().c_str());
     }
@@ -233,7 +233,7 @@ bool VectorAnimationTask::Load(bool synchronousLoading)
   if(gTraceFilter && gTraceFilter->IsTraceEnabled())
   {
     std::ostringstream oss;
-    oss << "[url:" << mImageUrl.GetUrl() << "]";
+    oss << "[url:" << mImageUrl.GetEllipsedUrl() << "]";
     // DALI_TRACE_END(gTraceFilter, "DALI_LOTTIE_LOADING_TASK"); ///< TODO : Open it if we can control trace log level
     DALI_LOG_RELEASE_INFO("END: DALI_LOTTIE_LOADING_TASK %s", oss.str().c_str());
   }
@@ -576,7 +576,7 @@ bool VectorAnimationTask::Rasterize()
 
   DALI_TRACE_BEGIN_WITH_MESSAGE_GENERATOR(gTraceFilter, "DALI_LOTTIE_RASTERIZE_TASK", [&](std::ostringstream& oss) {
     oss << "[size:" << mWidth << "x" << mHeight << " ";
-    oss << "url:" << mImageUrl.GetUrl() << "]";
+    oss << "url:" << mImageUrl.GetEllipsedUrl() << "]";
   });
 
   ApplyAnimationData();
@@ -691,7 +691,7 @@ bool VectorAnimationTask::Rasterize()
     oss << "frame:" << mCurrentFrame << " ";
     oss << "loop:" << mCurrentLoop << " ";
     oss << "state:" << mPlayState << " ";
-    oss << "url:" << mImageUrl.GetUrl() << "]";
+    oss << "url:" << mImageUrl.GetEllipsedUrl() << "]";
   });
 
   return true;
index 9e18e36..1d045dc 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2023 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2024 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -650,7 +650,7 @@ void ImageVisual::LoadTexture(bool& atlasing, Vector4& atlasRect, TextureSet& te
     else if(mUseFastTrackUploading)
     {
       DALI_LOG_DEBUG_INFO("FastTrack : Fail to load fast track. mUrl : [%s]%s%s%s%s%s%s%s%s\n",
-                          mImageUrl.GetUrl().c_str(),
+                          mImageUrl.GetEllipsedUrl().c_str(),
                           (mLoadPolicy != Toolkit::ImageVisual::LoadPolicy::ATTACHED) ? "/ mLoadPolicy != ATTACHED" : "",
                           (mReleasePolicy != Toolkit::ImageVisual::ReleasePolicy::DETACHED) ? "/ mReleasePolicy != DETACHED" : "",
                           (forceReload != TextureManager::ReloadPolicy::CACHED) ? "/ forceReload != CACHED" : "",
index 41956dd..1305936 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2023 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2024 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -89,7 +89,7 @@ void SvgLoadingTask::Process()
   if(gTraceFilter && gTraceFilter->IsTraceEnabled())
   {
     std::ostringstream oss;
-    oss << "[url:" << mImageUrl.GetUrl() << "]";
+    oss << "[url:" << mImageUrl.GetEllipsedUrl() << "]";
     // DALI_TRACE_BEGIN(gTraceFilter, "DALI_SVG_LOADING_TASK"); ///< TODO : Open it if we can control trace log level
     DALI_LOG_RELEASE_INFO("BEGIN: DALI_SVG_LOADING_TASK %s", oss.str().c_str());
   }
@@ -143,7 +143,7 @@ void SvgLoadingTask::Process()
   {
     std::ostringstream oss;
     oss << "[success:" << mHasSucceeded << " ";
-    oss << "url:" << mImageUrl.GetUrl() << "]";
+    oss << "url:" << mImageUrl.GetEllipsedUrl() << "]";
     // DALI_TRACE_END(gTraceFilter, "DALI_SVG_LOADING_TASK"); ///< TODO : Open it if we can control trace log level
     DALI_LOG_RELEASE_INFO("END: DALI_SVG_LOADING_TASK %s", oss.str().c_str());
   }
@@ -176,7 +176,7 @@ void SvgRasterizingTask::Process()
 
   DALI_TRACE_BEGIN_WITH_MESSAGE_GENERATOR(gTraceFilter, "DALI_SVG_RASTERIZE_TASK", [&](std::ostringstream& oss) {
     oss << "[size:" << mWidth << "x" << mHeight << " ";
-    oss << "url:" << mImageUrl.GetUrl() << "]";
+    oss << "url:" << mImageUrl.GetEllipsedUrl() << "]";
   });
 
   Devel::PixelBuffer pixelBuffer = mVectorRenderer.Rasterize(mWidth, mHeight);
@@ -185,7 +185,7 @@ void SvgRasterizingTask::Process()
     DALI_LOG_ERROR("Rasterize is failed!\n");
     DALI_TRACE_END_WITH_MESSAGE_GENERATOR(gTraceFilter, "DALI_SVG_RASTERIZE_TASK", [&](std::ostringstream& oss) {
       oss << "[size:" << mWidth << "x" << mHeight << " ";
-      oss << "url:" << mImageUrl.GetUrl() << "]";
+      oss << "url:" << mImageUrl.GetEllipsedUrl() << "]";
     });
     return;
   }
@@ -195,7 +195,7 @@ void SvgRasterizingTask::Process()
 
   DALI_TRACE_END_WITH_MESSAGE_GENERATOR(gTraceFilter, "DALI_SVG_RASTERIZE_TASK", [&](std::ostringstream& oss) {
     oss << "[size:" << mWidth << "x" << mHeight << " ";
-    oss << "url:" << mImageUrl.GetUrl() << "]";
+    oss << "url:" << mImageUrl.GetEllipsedUrl() << "]";
   });
 }
 
index 93c1e78..2f16427 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2024 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -29,6 +29,10 @@ namespace Internal
 {
 namespace
 {
+constexpr uint32_t URL_ELLIPSED_LENGTH = 20u;
+
+static_assert(URL_ELLIPSED_LENGTH < URL_ELLIPSED_LENGTH + 3u); ///< Guard overflow cases. (for svace)
+
 VisualUrl::ProtocolType ResolveLocation(const std::string& url)
 {
   const char*    urlCStr = url.c_str();
@@ -293,6 +297,17 @@ const std::string& VisualUrl::GetUrl() const
   return mUrl;
 }
 
+std::string VisualUrl::GetEllipsedUrl() const
+{
+  if(mUrl.size() > URL_ELLIPSED_LENGTH + 3)
+  {
+    std::string ellipsedUrl = "...";
+    ellipsedUrl += mUrl.substr(mUrl.size() - URL_ELLIPSED_LENGTH);
+    return ellipsedUrl;
+  }
+  return mUrl;
+}
+
 std::uint64_t VisualUrl::GetUrlHash() const
 {
   return DALI_UNLIKELY(mUrlHash == 0) ? (mUrlHash = Dali::CalculateHash(mUrl)) : mUrlHash;
@@ -363,7 +378,7 @@ std::string VisualUrl::GetLocationWithoutExtension(const std::string& url)
   const auto location = url.find("://");
   if(std::string::npos != location)
   {
-    const auto extension = url.find_last_of("."); // Find last position of '.' keyword.
+    const auto extension      = url.find_last_of("."); // Find last position of '.' keyword.
     const auto locationLength = extension != std::string::npos ? extension - (location + 3u) : std::string::npos;
     return url.substr(location + 3u, locationLength); // 3 characters forwards from the start of ://, and end of last '.' keyword.
   }
index 246e4cf..8caf716 100644 (file)
@@ -2,7 +2,7 @@
 #define DALI_TOOLKIT_INTERNAL_VISUAL_URL_H
 
 /*
- * Copyright (c) 2023 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2024 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -105,6 +105,12 @@ public:
   const std::string& GetUrl() const;
 
   /**
+   * Get the ellipsed URL.
+   * @return The ellipsed url
+   */
+  std::string GetEllipsedUrl() const;
+
+  /**
    * Get the hash value of full URL
    * @return The hash value of url
    */