X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2FApplication%2FApplicationManager.cpp;h=75d11d445846ff643fabbaa15edbc1eaf71282c1;hb=c03be72177a1162f84ef9af0bb5caca3bff7c9c6;hp=47ce3b86d32000a2327981771ba65ace692f10b2;hpb=b8c7c1cb164e3a6a9b165f3ef1f785fff789a34a;p=platform%2Fframework%2Fweb%2Fwrt-plugins-tizen.git diff --git a/src/Application/ApplicationManager.cpp b/src/Application/ApplicationManager.cpp index 47ce3b8..75d11d4 100644 --- a/src/Application/ApplicationManager.cpp +++ b/src/Application/ApplicationManager.cpp @@ -28,7 +28,6 @@ #include "ApplicationContext.h" #include "ApplicationControlData.h" #include "ApplicationControl.h" -#include "ApplicationCert.h" #include "Application.h" #include @@ -369,6 +368,24 @@ namespace { return true; } + + static int app_meta_data_cb(const char *meta_key, const char *meta_value, void *user_data) + { + if ((meta_key == NULL) || (meta_value == NULL)) { + LoggerE("meta_key or meta_value is null"); + return 0; + } + + ApplicationMetaDataPtr metaData(new ApplicationMetaData()); + + metaData->setKey(meta_key); + metaData->setValue(meta_value); + + ApplicationMetaDataArray *metaDataArray = (ApplicationMetaDataArray *)user_data; + metaDataArray->push_back(metaData); + + return 0; + } } ApplicationManager::ApplicationManager() : @@ -800,13 +817,12 @@ ApplicationCertArrayPtr ApplicationManager::getAppCerts(const std::string id) return certArray; } +std::string ApplicationManager::getAppSharedURI(const std::string id) +{ #define TIZENAPIS_APP_FILE_SCHEME "file://" #define TIZENAPIS_APP_SLASH "/" #define TIZENAPIS_APP_SHARED "shared" - -std::string ApplicationManager::getAppSharedURI(const std::string id) -{ std::string appId; if (id.empty()) { @@ -867,6 +883,43 @@ std::string ApplicationManager::getAppSharedURI(const std::string id) return sharedURI; } +ApplicationMetaDataArrayPtr ApplicationManager::getAppMetaData(const std::string id) +{ + std::string appId = id; + + // in case of no argument, get application information of current. + if (appId.empty()) + { + appId = get_current_app_id(); + } + + int ret = 0; + pkgmgrinfo_appinfo_h handle; + + TIME_TRACER_ITEM_BEGIN("(getAppMetaData)pkgmgrinfo_appinfo_get_appinfo", 0); + ret = pkgmgrinfo_appinfo_get_appinfo(appId.c_str(), &handle); + TIME_TRACER_ITEM_END("(getAppMetaData)pkgmgrinfo_appinfo_get_appinfo", 0); + + if (ret != PMINFO_R_OK) { + ThrowMsg(NotFoundException, "Cannot found application with given appId"); + } + + ApplicationMetaDataArrayPtr metaDataArray(new ApplicationMetaDataArray()); + + TIME_TRACER_ITEM_BEGIN("(getAppMetaData)pkgmgrinfo_appinfo_foreach_metadata", 0); + ret = pkgmgrinfo_appinfo_foreach_metadata(handle, app_meta_data_cb, (void*)metaDataArray.Get()); + TIME_TRACER_ITEM_END("(getAppMetaData)pkgmgrinfo_appinfo_foreach_metadata", 0); + + if (ret != PMINFO_R_OK) { + LoggerE("pkgmgrinfo_appinfo_metadata_filter_foreach() failed"); + pkgmgrinfo_appinfo_destroy_appinfo(handle); + ThrowMsg(UnknownException, "fail to get custom tag"); + } + + pkgmgrinfo_appinfo_destroy_appinfo(handle); + + return metaDataArray; +} void ApplicationManager::OnRequestReceived(const EventApplicationLaunchPtr& event) {