Update change log and spec for wrt-plugins-tizen_0.4.44
[platform/framework/web/wrt-plugins-tizen.git] / src / Application / ApplicationManager.cpp
index 47ce3b8..75d11d4 100644 (file)
@@ -28,7 +28,6 @@
 #include "ApplicationContext.h"
 #include "ApplicationControlData.h"
 #include "ApplicationControl.h"
-#include "ApplicationCert.h"
 #include "Application.h"
 
 #include <app.h>
@@ -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)
 {