/*
- * 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";
}
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
/*
- * 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.
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());
}
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());
}
/*
- * 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.
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());
}
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());
}
/*
- * 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.
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());
}
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());
}
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());
}
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();
oss << "frame:" << mCurrentFrame << " ";
oss << "loop:" << mCurrentLoop << " ";
oss << "state:" << mPlayState << " ";
- oss << "url:" << mImageUrl.GetUrl() << "]";
+ oss << "url:" << mImageUrl.GetEllipsedUrl() << "]";
});
return true;
/*
- * 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.
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" : "",
/*
- * 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.
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());
}
{
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());
}
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);
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;
}
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() << "]";
});
}
/*
- * 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.
{
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();
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;
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.
}
#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.
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
*/