From 2bd067b03f9d35491857b3b084213910b163041a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Piotr=20Kosko/Native/Web=20API=20=28SWP=29=20/SRPOL/Profess?= =?utf8?q?ional/=EC=82=BC=EC=84=B1=EC=A0=84=EC=9E=90?= Date: Tue, 8 Jan 2019 11:11:38 +0100 Subject: [PATCH] [Content] Code refactored not to use deprecated native API MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit [Feature] - use internal native API in place of removed public API (added include *internal.h) int image_meta_set_orientation(image_meta_h, media_content_orientation_e) int image_meta_update_to_db(image_meta_h) int media_info_set_description(media_info_h, const char*) int media_info_set_display_name(media_info_h, const char*) int media_info_set_latitude(media_info_h, double) int media_info_set_longitude(media_info_h, double) int media_info_set_rating(media_info_h, int) - use stat instead of media_folder_get_modified_time() - removed usage of not documented enum MEDIA_CONTENT_STORAGE_CLOUD [Related ACR] http://suprem.sec.samsung.net/jira/browse/ACR-1308 [Verification] tct-content - 100% Change-Id: I37932c59549295e4d7154888406275168c49ab47 Signed-off-by: Piotr Kosko/Native/Web API (SWP) /SRPOL/Professional/삼성전자 --- src/content/content_manager.cc | 48 ++++++++++++++++------------------ src/content/content_manager.h | 4 +-- 2 files changed, 24 insertions(+), 28 deletions(-) diff --git a/src/content/content_manager.cc b/src/content/content_manager.cc index bff61831..8d8c990d 100644 --- a/src/content/content_manager.cc +++ b/src/content/content_manager.cc @@ -16,8 +16,10 @@ #include "content/content_manager.h" +#include #include #include +#include #include #include #include @@ -360,7 +362,6 @@ void ContentDirToJson(media_folder_h folder, picojson::object& o) { int ret; char* tmpStr = NULL; media_content_storage_e storage_type; - time_t tmpDate; // id ret = media_folder_get_folder_id(folder, &tmpStr); @@ -373,10 +374,13 @@ void ContentDirToJson(media_folder_h folder, picojson::object& o) { } // directoryURI + std::string folder_path; ret = media_folder_get_path(folder, &tmpStr); if (ret == MEDIA_CONTENT_ERROR_NONE) { if (tmpStr) { o["directoryURI"] = picojson::value(std::string(tmpStr)); + // folder_path value kept for modifiedDate property gathering + folder_path = tmpStr; free(tmpStr); tmpStr = NULL; } @@ -397,17 +401,17 @@ void ContentDirToJson(media_folder_h folder, picojson::object& o) { if (ret == MEDIA_CONTENT_ERROR_NONE) { if (storage_type == MEDIA_CONTENT_STORAGE_INTERNAL) { o["storageType"] = picojson::value(std::string("INTERNAL")); - } else if (storage_type == MEDIA_CONTENT_STORAGE_EXTERNAL) { + } else { + LoggerD("storageType = %d, assuming EXTERNAL as storage type", storage_type); o["storageType"] = picojson::value(std::string("EXTERNAL")); - } else if (storage_type == MEDIA_CONTENT_STORAGE_CLOUD) { - o["storageType"] = picojson::value(std::string("CLOUD")); } } - // modifiedData - ret = media_folder_get_modified_time(folder, &tmpDate); - if (ret == MEDIA_CONTENT_ERROR_NONE) { - o["modifiedDate"] = picojson::value(static_cast(tmpDate)); + // modifiedDate + struct stat stat_res; + if (stat(folder_path.c_str(), &stat_res) == 0) { + auto mod_time = stat_res.st_mtime; + o["modifiedDate"] = picojson::value(static_cast(mod_time)); } } @@ -512,36 +516,32 @@ static void FolderToJson(media_folder_h folder, picojson::object* out) { ("Failed: media_folder_get_folder_id")); return; } + std::unique_ptr id_ptr(id, &free); ret = media_folder_get_name(folder, &name); if (ret != MEDIA_CONTENT_ERROR_NONE) { LogAndReportError(ContentManager::convertError(ret), out, ("Failed: media_folder_get_name")); - free(id); return; } + std::unique_ptr name_ptr(name, &free); ret = media_folder_get_path(folder, &path); if (ret != MEDIA_CONTENT_ERROR_NONE) { LogAndReportError(ContentManager::convertError(ret), out, ("Failed: media_folder_get_path")); - free(id); - free(name); return; } + std::unique_ptr path_ptr(path, &free); - ret = media_folder_get_modified_time(folder, &date); - if (ret != MEDIA_CONTENT_ERROR_NONE) { - LogAndReportError(ContentManager::convertError(ret), out, ("Failed: media_folder_get_path")); - free(id); - free(name); - free(path); + struct stat stat_res; + ret = stat(path, &stat_res); + if (0 != ret) { + LogAndReportError(ContentManager::convertError(errno), out, ("Failed: stat")); return; } + date = stat_res.st_mtime; ret = media_folder_get_storage_type(folder, &storageType); if (ret != MEDIA_CONTENT_ERROR_NONE) { - free(id); - free(name); - free(path); LogAndReportError(ContentManager::convertError(ret), out, ("Failed: media_folder_get_storage_type")); return; @@ -558,10 +558,6 @@ static void FolderToJson(media_folder_h folder, picojson::object* out) { } (*out)["modifiedDate"] = picojson::value(static_cast(date)); - - free(name); - free(id); - free(path); } static bool media_foreach_directory_cb(media_folder_h folder, void* user_data) { @@ -1013,7 +1009,7 @@ void ContentManager::removePlaylist(std::string playlistId, } } -int ContentManager::update(picojson::value args) { +int ContentManager::update(const picojson::value& args) { ScopeLogger(); int ret; @@ -1031,7 +1027,7 @@ int ContentManager::update(picojson::value args) { return ret; } -int ContentManager::updateBatch(picojson::value args) { +int ContentManager::updateBatch(const picojson::value& args) { ScopeLogger(); int ret = 0; std::vector contents = args.get("contents").get(); diff --git a/src/content/content_manager.h b/src/content/content_manager.h index 9f86c960..8c15d0d8 100644 --- a/src/content/content_manager.h +++ b/src/content/content_manager.h @@ -56,8 +56,8 @@ class ContentManager { void getDirectories(const std::shared_ptr& user_data); void find(const std::shared_ptr& user_data); - int update(picojson::value args); - int updateBatch(picojson::value args); + int update(const picojson::value& args); + int updateBatch(const picojson::value& args); int scanFile(std::string& uri); common::PlatformResult scanDirectory(media_scan_completed_cb callback, ReplyCallbackData* cbData); -- 2.34.1