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