From: Piotr Kosko/Native/Web API (SWP) /SRPOL/Professional/삼성전자
Date: Tue, 8 Jan 2019 10:11:38 +0000 (+0100)
Subject: [Content] Code refactored not to use deprecated native API
X-Git-Tag: submit/tizen/20190109.233706~2
X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F84%2F196984%2F4;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git
[Content] Code refactored not to use deprecated native API
[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/삼성전자
---
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);