From fb5736866e27aa3ed3b7115c0700192ba6a24078 Mon Sep 17 00:00:00 2001 From: "Eunki, Hong" Date: Mon, 22 Jan 2024 17:03:06 +0900 Subject: [PATCH] [Tizen] Make method to get VisualUrl shorter. 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 --- .../dali-toolkit-internal/utc-Dali-VisualUrl.cpp | 40 +++++++++++++++++++++- .../image-loader/fast-track-loading-task.cpp | 6 ++-- .../internal/image-loader/loading-task.cpp | 6 ++-- .../vector-animation-task.cpp | 12 +++---- .../internal/visuals/image/image-visual.cpp | 4 +-- dali-toolkit/internal/visuals/svg/svg-task.cpp | 12 +++---- dali-toolkit/internal/visuals/visual-url.cpp | 19 ++++++++-- dali-toolkit/internal/visuals/visual-url.h | 8 ++++- 8 files changed, 83 insertions(+), 24 deletions(-) diff --git a/automated-tests/src/dali-toolkit-internal/utc-Dali-VisualUrl.cpp b/automated-tests/src/dali-toolkit-internal/utc-Dali-VisualUrl.cpp index 3e5e8eb..f94764d 100644 --- a/automated-tests/src/dali-toolkit-internal/utc-Dali-VisualUrl.cpp +++ b/automated-tests/src/dali-toolkit-internal/utc-Dali-VisualUrl.cpp @@ -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. @@ -26,6 +26,11 @@ 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 diff --git a/dali-toolkit/internal/image-loader/fast-track-loading-task.cpp b/dali-toolkit/internal/image-loader/fast-track-loading-task.cpp index 0f5f123..d2faacd 100644 --- a/dali-toolkit/internal/image-loader/fast-track-loading-task.cpp +++ b/dali-toolkit/internal/image-loader/fast-track-loading-task.cpp @@ -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()); } diff --git a/dali-toolkit/internal/image-loader/loading-task.cpp b/dali-toolkit/internal/image-loader/loading-task.cpp index e26a927..43a994d 100644 --- a/dali-toolkit/internal/image-loader/loading-task.cpp +++ b/dali-toolkit/internal/image-loader/loading-task.cpp @@ -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()); } diff --git a/dali-toolkit/internal/visuals/animated-vector-image/vector-animation-task.cpp b/dali-toolkit/internal/visuals/animated-vector-image/vector-animation-task.cpp index ca65458..467c6ab 100644 --- a/dali-toolkit/internal/visuals/animated-vector-image/vector-animation-task.cpp +++ b/dali-toolkit/internal/visuals/animated-vector-image/vector-animation-task.cpp @@ -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; diff --git a/dali-toolkit/internal/visuals/image/image-visual.cpp b/dali-toolkit/internal/visuals/image/image-visual.cpp index c190f00..03d52dc 100644 --- a/dali-toolkit/internal/visuals/image/image-visual.cpp +++ b/dali-toolkit/internal/visuals/image/image-visual.cpp @@ -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" : "", diff --git a/dali-toolkit/internal/visuals/svg/svg-task.cpp b/dali-toolkit/internal/visuals/svg/svg-task.cpp index 41956dd..1305936 100644 --- a/dali-toolkit/internal/visuals/svg/svg-task.cpp +++ b/dali-toolkit/internal/visuals/svg/svg-task.cpp @@ -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() << "]"; }); } diff --git a/dali-toolkit/internal/visuals/visual-url.cpp b/dali-toolkit/internal/visuals/visual-url.cpp index 93c1e78..2f16427 100644 --- a/dali-toolkit/internal/visuals/visual-url.cpp +++ b/dali-toolkit/internal/visuals/visual-url.cpp @@ -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. } diff --git a/dali-toolkit/internal/visuals/visual-url.h b/dali-toolkit/internal/visuals/visual-url.h index 246e4cf..8caf716 100644 --- a/dali-toolkit/internal/visuals/visual-url.h +++ b/dali-toolkit/internal/visuals/visual-url.h @@ -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 */ -- 2.7.4