Switch parsing procedures to StepParseManifest 51/57751/1 submit/tizen/20160122.140520
authorTomasz Iwanek <t.iwanek@samsung.com>
Thu, 21 Jan 2016 14:20:49 +0000 (15:20 +0100)
committerTomasz Iwanek <t.iwanek@samsung.com>
Fri, 22 Jan 2016 09:52:59 +0000 (10:52 +0100)
Run smoke tests to verify.

Requires:
 - https://review.tizen.org/gerrit/57750

Change-Id: Iae12506595ad9e86c9e8aa18627472d4a19ad5cf

src/tpk/CMakeLists.txt
src/tpk/step/step_parse.cc [deleted file]
src/tpk/step/step_parse.h [deleted file]
src/tpk/step/step_parse_recovery.cc [deleted file]
src/tpk/step/step_parse_recovery.h [deleted file]
src/tpk/tpk_installer.cc

index 746517f03d69908c7587161ed18b17c6e263896a..ef7d03c422a1765c8d0da19b4a39dd5cf6a208ea 100644 (file)
@@ -1,8 +1,6 @@
 SET(SRCS
     step/step_check_tpk_background_category.cc
     step/step_create_symbolic_link.cc
-    step/step_parse.cc
-    step/step_parse_recovery.cc
     step/step_convert_xml.cc
     step/step_tpk_patch_icons.cc
     tpk_app_query_interface.cc
@@ -17,8 +15,8 @@ TARGET_INCLUDE_DIRECTORIES(${TARGET_TPK_BACKEND} PUBLIC "${CMAKE_CURRENT_SOURCE_
 APPLY_PKG_CONFIG(${TARGET_LIBNAME_TPK} PUBLIC
   APP_INSTALLERS_DEPS
   PKGMGR_DEPS
-  TPK_MANIFEST_HANDLERS_DEPS
   MANIFEST_PARSER_DEPS
+  TPK_MANIFEST_HANDLERS_DEPS
   Boost
 )
 
diff --git a/src/tpk/step/step_parse.cc b/src/tpk/step/step_parse.cc
deleted file mode 100644 (file)
index f3ab7ff..0000000
+++ /dev/null
@@ -1,687 +0,0 @@
-// Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
-// Use of this source code is governed by an apache 2.0 license that can be
-// found in the LICENSE file.
-
-#include "tpk/step/step_parse.h"
-
-#include <common/app_installer.h>
-#include <common/installer_context.h>
-#include <common/step/step.h>
-#include <common/utils/glist_range.h>
-
-#include <tpk_manifest_handlers/account_handler.h>
-#include <tpk_manifest_handlers/application_manifest_constants.h>
-#include <tpk_manifest_handlers/author_handler.h>
-#include <tpk_manifest_handlers/description_handler.h>
-#include <tpk_manifest_handlers/package_handler.h>
-#include <tpk_manifest_handlers/privileges_handler.h>
-#include <tpk_manifest_handlers/profile_handler.h>
-#include <tpk_manifest_handlers/service_application_handler.h>
-#include <tpk_manifest_handlers/shortcut_handler.h>
-#include <tpk_manifest_handlers/ui_application_handler.h>
-#include <tpk_manifest_handlers/widget_application_handler.h>
-
-#include <pkgmgr/pkgmgr_parser.h>
-#include <pkgmgr-info.h>
-
-#include <chrono>
-#include <cstdio>
-#include <cstdlib>
-#include <cstring>
-#include <memory>
-#include <set>
-#include <type_traits>
-#include <string>
-#include <vector>
-
-
-namespace tpk {
-namespace parse {
-
-namespace {
-
-namespace app_keys = tpk::application_keys;
-namespace bf = boost::filesystem;
-
-const char kManifestFileName[] = "tizen-manifest.xml";
-
-}  // namepsace
-
-common_installer::Step::Status StepParse::precheck() {
-  if (context_->unpacked_dir_path.get().empty()) {
-    LOG(ERROR) << "unpacked_dir_path attribute is empty";
-    return common_installer::Step::Status::INVALID_VALUE;
-  }
-  if (!boost::filesystem::exists(context_->unpacked_dir_path.get())) {
-    LOG(ERROR) << "unpacked_dir_path ("
-               << context_->unpacked_dir_path.get()
-               << ") path does not exist";
-    return common_installer::Step::Status::INVALID_VALUE;
-  }
-
-  boost::filesystem::path tmp;
-  if (!context_->xml_path.get().empty()) {
-    tmp = context_->xml_path.get();
-  } else {
-    tmp = context_->unpacked_dir_path.get();
-    tmp /= kManifestFileName;
-  }
-
-  if (!boost::filesystem::exists(tmp)) {
-    LOG(ERROR) << "manifest not found from the package";
-    return common_installer::Step::Status::MANIFEST_NOT_FOUND;
-  }
-
-  return common_installer::Step::Status::OK;
-}
-
-bool StepParse::LocateConfigFile() {
-  boost::filesystem::path manifest;
-  if (!context_->xml_path.get().empty()) {
-    manifest = context_->xml_path.get();
-  } else {
-    manifest = context_->unpacked_dir_path.get();
-    manifest /= kManifestFileName;
-  }
-
-  LOG(DEBUG) << "manifest path: " << manifest;
-
-  if (!boost::filesystem::exists(manifest))
-    return false;
-
-  path_ = manifest;
-  return true;
-}
-
-bf::path StepParse::LocateConfigFile() const {
-  boost::filesystem::path path;
-  if (!context_->xml_path.get().empty()) {
-    path = context_->xml_path.get();
-  } else {
-    path = context_->unpacked_dir_path.get();
-    path /= kManifestFileName;
-  }
-  return path;
-}
-
-bool StepParse::FillInstallationInfo(manifest_x* manifest) {
-  manifest->root_path = strdup(
-      (context_->root_application_path.get() / manifest->package).c_str());
-  manifest->installed_time =
-      strdup(std::to_string(std::chrono::system_clock::to_time_t(
-          std::chrono::system_clock::now())).c_str());
-  return true;
-}
-
-bool StepParse::FillPackageInfo(manifest_x* manifest) {
-  std::shared_ptr<const PackageInfo> pkg_info =
-      std::static_pointer_cast<const PackageInfo>(
-          parser_->GetManifestData(app_keys::kManifestKey));
-  if (!pkg_info) {
-    LOG(ERROR) << "Package info manifest data has not been found.";
-    return false;
-  }
-
-  std::shared_ptr<const UIApplicationInfoList> ui_application_list =
-      std::static_pointer_cast<const UIApplicationInfoList>(
-          parser_->GetManifestData(app_keys::kUIApplicationKey));
-  std::shared_ptr<const ServiceApplicationInfoList> service_application_list =
-      std::static_pointer_cast<const ServiceApplicationInfoList>(
-          parser_->GetManifestData(app_keys::kServiceApplicationKey));
-  std::shared_ptr<const WidgetApplicationInfoList> widget_application_list =
-      std::static_pointer_cast<const WidgetApplicationInfoList>(
-          parser_->GetManifestData(app_keys::kWidgetApplicationKey));
-
-  // mandatory check
-  if (!ui_application_list && !service_application_list &&
-      !widget_application_list) {
-    LOG(ERROR) << "UI Application or Service Application or Widget Application "
-                  "are mandatory and has not been found.";
-    return false;
-  }
-
-  manifest->ns = strdup(pkg_info->xmlns().c_str());
-  manifest->package = strdup(pkg_info->package().c_str());
-  manifest->nodisplay_setting = strdup(pkg_info->nodisplay_setting().c_str());
-  manifest->appsetting = strdup("false");
-  manifest->support_disable = strdup("false");
-  manifest->version = strdup(pkg_info->version().c_str());
-  manifest->installlocation = strdup(pkg_info->install_location().c_str());
-  manifest->api_version = strdup(pkg_info->api_version().c_str());
-  if (context_->pkg_type.get().compare("rpm") == 0)
-    manifest->type = strdup("rpm");
-  else
-    manifest->type = strdup("tpk");
-
-  for (auto& pair : pkg_info->labels()) {
-    label_x* label = reinterpret_cast<label_x*>(calloc(1, sizeof(label_x)));
-    if (!pair.first.empty())
-      label->lang = strdup(pair.first.c_str());
-    else
-      label->lang = strdup(DEFAULT_LOCALE);
-    label->name = strdup(pair.second.c_str());
-    manifest->label = g_list_append(manifest->label, label);
-  }
-
-  std::shared_ptr<const ProfileInfo> profile_info =
-      std::static_pointer_cast<const ProfileInfo>(
-          parser_->GetManifestData(ProfileInfo::Key()));
-  if (profile_info) {
-    for (auto& profile : profile_info->profiles()) {
-      manifest->deviceprofile = g_list_append(manifest->deviceprofile,
-                                              strdup(profile.c_str()));
-    }
-  }
-
-  if (ui_application_list) {
-    manifest->mainapp_id =
-        strdup(ui_application_list->items[0].app_info.appid().c_str());
-  } else if (service_application_list) {
-    manifest->mainapp_id =
-        strdup(service_application_list->items[0].app_info.appid().c_str());
-  } else if (widget_application_list) {
-    manifest->mainapp_id =
-        strdup(widget_application_list->items[0].app_info.appid().c_str());
-  }
-  return true;
-}
-
-bool StepParse::FillAuthorInfo(manifest_x* manifest) {
-  std::shared_ptr<const AuthorInfo> author_info =
-      std::static_pointer_cast<const AuthorInfo>(
-          parser_->GetManifestData(app_keys::kAuthorKey));
-
-  if (!author_info) {
-    LOG(ERROR) << "Author data has not been found.";
-    return false;
-  }
-
-  author_x* author = reinterpret_cast<author_x*>(calloc(1, sizeof(author_x)));
-  author->text = strdup(author_info->name().c_str());
-  author->email = strdup(author_info->email().c_str());
-  author->href = strdup(author_info->href().c_str());
-  author->lang = strdup(DEFAULT_LOCALE);
-  manifest->author = g_list_append(manifest->author, author);
-  return true;
-}
-
-bool StepParse::FillDescription(manifest_x* manifest) {
-  std::shared_ptr<const DescriptionInfo> description_info =
-      std::static_pointer_cast<const DescriptionInfo>(
-          parser_->GetManifestData(app_keys::kDescriptionKey));
-
-  if (!description_info) {
-    LOG(ERROR) << "Description data has not been found.";
-    return false;
-  }
-
-  description_x* description = reinterpret_cast<description_x*>
-      (calloc(1, sizeof(description_x)));
-  description->text = strdup(description_info->description().c_str());
-  description->lang = !description_info->xml_lang().empty() ?
-      strdup(description_info->xml_lang().c_str()) : strdup(DEFAULT_LOCALE);
-  manifest->description = g_list_append(manifest->description, description);
-  return true;
-}
-
-bool StepParse::FillPrivileges(manifest_x* manifest) {
-  std::shared_ptr<const PrivilegesInfo> perm_info =
-      std::static_pointer_cast<const PrivilegesInfo>(parser_->GetManifestData(
-          app_keys::kPrivilegesKey));
-  if (!perm_info)
-    return true;
-
-  std::set<std::string> privileges = perm_info->GetPrivileges();
-  for (auto& priv : privileges) {
-    manifest->privileges = g_list_append(manifest->privileges,
-                                         strdup(priv.c_str()));
-  }
-  return true;
-}
-
-bool StepParse::FillWidgetApplication(manifest_x* manifest) {
-  std::shared_ptr<const WidgetApplicationInfoList> widget_application_list =
-      std::static_pointer_cast<const WidgetApplicationInfoList>(
-          parser_->GetManifestData(app_keys::kWidgetApplicationKey));
-  if (!widget_application_list)
-    return true;
-
-  for (const auto& application : widget_application_list->items) {
-    // if there is no app yet, set this app as mainapp
-    bool main_app = manifest->application == nullptr;
-
-    application_x* widget_app =
-        static_cast<application_x*>(calloc(1, sizeof(application_x)));
-    widget_app->appid = strdup(application.app_info.appid().c_str());
-    widget_app->launch_mode =
-        strdup(application.app_info.launch_mode().c_str());
-    widget_app->multiple = strdup(application.app_info.multiple().c_str());
-    widget_app->nodisplay =
-        strdup(application.app_info.nodisplay().c_str());
-    widget_app->type = strdup("capp");
-    widget_app->component_type = strdup("widgetapp");
-    widget_app->hwacceleration =
-        strdup(application.app_info.hwacceleration().c_str());
-    widget_app->onboot = strdup("false");
-    widget_app->autorestart = strdup("false");
-    widget_app->mainapp = main_app ? strdup("true") : strdup("false");
-    widget_app->enabled = strdup("true");
-    widget_app->screenreader = strdup("use-system-setting");
-    widget_app->recentimage = strdup("false");
-    widget_app->launchcondition = strdup("false");
-    widget_app->guestmode_visibility = strdup("true");
-    widget_app->permission_type = strdup("normal");
-    widget_app->ambient_support = strdup("false");
-    widget_app->package = strdup(manifest->package);
-    widget_app->support_disable = strdup(manifest->support_disable);
-    manifest->application = g_list_append(manifest->application, widget_app);
-    if (strncmp(context_->pkg_type.get().c_str(), "rpm", strlen("rpm")) == 0)
-      widget_app->exec = strdup(application.app_info.exec().c_str());
-    else
-      widget_app->exec = strdup((context_->root_application_path.get()
-                            / manifest->package / "bin"
-                            / application.app_info.exec()).c_str());
-
-    if (!FillApplicationIconPaths(widget_app, application.app_icons))
-      return false;
-    if (!FillLabel(widget_app, application.label))
-      return false;
-    if (!FillImage(widget_app, application.app_images))
-      return false;
-    if (!FillMetadata(widget_app, application.meta_data))
-      return false;
-  }
-  return true;
-}
-
-bool StepParse::FillServiceApplication(manifest_x* manifest) {
-  std::shared_ptr<const ServiceApplicationInfoList> service_application_list =
-      std::static_pointer_cast<const ServiceApplicationInfoList>(
-          parser_->GetManifestData(app_keys::kServiceApplicationKey));
-  if (!service_application_list)
-    return true;
-
-  for (const auto& application : service_application_list->items) {
-    // if there is no app yet, set this app as mainapp
-    bool main_app = manifest->application == nullptr;
-
-    application_x* service_app =
-        static_cast<application_x*>(calloc(1, sizeof(application_x)));
-    service_app->appid = strdup(application.app_info.appid().c_str());
-    service_app->autorestart =
-        strdup(application.app_info.auto_restart().c_str());
-    service_app->onboot = strdup(application.app_info.on_boot().c_str());
-    service_app->type = strdup(application.app_info.type().c_str());
-    service_app->process_pool =
-        strdup(application.app_info.process_pool().c_str());
-    service_app->component_type = strdup("svcapp");
-    service_app->mainapp = main_app ? strdup("true") : strdup("false");
-    service_app->enabled = strdup("true");
-    service_app->hwacceleration = strdup("default");
-    service_app->screenreader = strdup("use-system-setting");
-    service_app->recentimage = strdup("false");
-    service_app->launchcondition = strdup("false");
-    service_app->indicatordisplay = strdup("true");
-    service_app->effectimage_type = strdup("image");
-    service_app->guestmode_visibility = strdup("true");
-    service_app->permission_type = strdup("normal");
-    service_app->submode = strdup("false");
-    service_app->process_pool = strdup("false");
-    service_app->ambient_support = strdup("false");
-    service_app->package = strdup(manifest->package);
-    service_app->support_disable = strdup(manifest->support_disable);
-    manifest->application = g_list_append(manifest->application, service_app);
-    if (strncmp(context_->pkg_type.get().c_str(), "rpm", strlen("rpm")) == 0)
-      service_app->exec = strdup(application.app_info.exec().c_str());
-    else
-      service_app->exec = strdup((context_->root_application_path.get()
-                            / manifest->package / "bin"
-                            / application.app_info.exec()).c_str());
-
-    if (!FillAppControl(service_app,  application.app_control))
-      return false;
-    if (!FillDataControl(service_app, application.data_control))
-      return false;
-    if (!FillApplicationIconPaths(service_app, application.app_icons))
-      return false;
-    if (!FillLabel(service_app, application.label))
-      return false;
-    if (!FillMetadata(service_app, application.meta_data))
-      return false;
-    if (!FillBackgroundCategoryInfo(service_app,
-        application.background_category))
-      return false;
-  }
-  return true;
-}
-
-bool StepParse::FillUIApplication(manifest_x* manifest) {
-  std::shared_ptr<const UIApplicationInfoList> ui_application_list =
-      std::static_pointer_cast<const UIApplicationInfoList>(
-          parser_->GetManifestData(app_keys::kUIApplicationKey));
-  if (!ui_application_list)
-    return true;
-
-  for (const auto& application : ui_application_list->items) {
-    // if there is no app yet, set this app as mainapp
-    bool main_app = manifest->application == nullptr;
-
-    application_x* ui_app =
-        static_cast<application_x*>(calloc(1, sizeof(application_x)));
-    ui_app->appid = strdup(application.app_info.appid().c_str());
-    ui_app->launch_mode = strdup(application.app_info.launch_mode().c_str());
-    ui_app->multiple = strdup(application.app_info.multiple().c_str());
-    ui_app->nodisplay = strdup(application.app_info.nodisplay().c_str());
-    ui_app->taskmanage = strdup(application.app_info.taskmanage().c_str());
-    ui_app->type = strdup(application.app_info.type().c_str());
-    ui_app->component_type = strdup("uiapp");
-    ui_app->ui_gadget = strdup(application.app_info.uigadget().c_str());
-    ui_app->process_pool = strdup(application.app_info.process_pool().c_str());
-    ui_app->submode = strdup(application.app_info.submode().c_str());
-    ui_app->indicatordisplay =
-        strdup(application.app_info.indicator_display().c_str());
-    ui_app->effectimage_type =
-        strdup(application.app_info.effectimage_type().c_str());
-    ui_app->portraitimg =
-        strdup(application.app_info.portrait_image().c_str());
-    ui_app->landscapeimg =
-        strdup(application.app_info.landscape_image().c_str());
-    ui_app->submode_mainid =
-        strdup(application.app_info.submode_mainid().c_str());
-    ui_app->hwacceleration =
-        strdup(application.app_info.hwacceleration().c_str());
-    ui_app->onboot = strdup("false");
-    ui_app->autorestart = strdup("false");
-    ui_app->component_type = strdup("uiapp");
-    ui_app->mainapp = main_app ? strdup("true") : strdup("false");
-    ui_app->enabled = strdup("true");
-    ui_app->screenreader = strdup("use-system-setting");
-    ui_app->recentimage = strdup("false");
-    ui_app->launchcondition = strdup("false");
-    ui_app->guestmode_visibility = strdup("true");
-    ui_app->permission_type = strdup("normal");
-    ui_app->ambient_support = strdup("false");
-    ui_app->package = strdup(manifest->package);
-    ui_app->support_disable = strdup(manifest->support_disable);
-    manifest->application = g_list_append(manifest->application, ui_app);
-    if (strncmp(context_->pkg_type.get().c_str(), "rpm", strlen("rpm")) == 0)
-      ui_app->exec = strdup(application.app_info.exec().c_str());
-    else
-      ui_app->exec = strdup((context_->root_application_path.get()
-                            / manifest->package / "bin"
-                            / application.app_info.exec()).c_str());
-
-
-    if (!FillAppControl(ui_app, application.app_control))
-      return false;
-    if (!FillDataControl(ui_app, application.data_control))
-      return false;
-    if (!FillApplicationIconPaths(ui_app, application.app_icons))
-      return false;
-    if (!FillLabel(ui_app, application.label))
-      return false;
-    if (!FillImage(ui_app, application.app_images))
-      return false;
-    if (!FillMetadata(ui_app, application.meta_data))
-      return false;
-    if (!FillBackgroundCategoryInfo(ui_app, application.background_category))
-      return false;
-  }
-  return true;
-}
-
-template <typename T>
-bool StepParse::FillAppControl(application_x* app, const T& app_control_list) {
-  if (app_control_list.empty())
-    return true;
-
-  for (const auto& control : app_control_list) {
-    appcontrol_x* app_control =
-          static_cast<appcontrol_x*>(calloc(1, sizeof(appcontrol_x)));
-    app_control->operation = strdup(control.operation().c_str());
-    if (!control.mime().empty())
-      app_control->mime = strdup(control.mime().c_str());
-    if (!control.uri().empty())
-      app_control->uri = strdup(control.uri().c_str());
-    app->appcontrol = g_list_append(app->appcontrol, app_control);
-  }
-  return true;
-}
-
-template <typename T>
-bool StepParse::FillDataControl(application_x* app,
-                                const T& data_control_list) {
-  if (data_control_list.empty())
-    return true;
-
-  for (const auto& control : data_control_list) {
-    datacontrol_x* data_control =
-          static_cast<datacontrol_x*>(calloc(1, sizeof(datacontrol_x)));
-    data_control->access = strdup(control.access().c_str());
-    data_control->providerid = strdup(control.providerid().c_str());
-    data_control->type = strdup(control.type().c_str());
-    app->datacontrol = g_list_append(app->datacontrol, data_control);
-  }
-  return true;
-}
-
-template <typename T>
-bool StepParse::FillApplicationIconPaths(application_x* app,
-                                         const T& icons_info) {
-  for (auto& application_icon : icons_info.icons()) {
-    icon_x* icon = reinterpret_cast<icon_x*> (calloc(1, sizeof(icon_x)));
-    // NOTE: name is an attribute, but the xml writer uses it as text.
-    // This must be fixed in whole app-installer modules, including wgt.
-    // Current implementation is just for compatibility.
-    bf::path text = context_->root_application_path.get()
-        / context_->pkgid.get() / "shared" / "res" / application_icon.path();
-    icon->text = strdup(text.c_str());
-    icon->name = strdup(application_icon.path().c_str());
-    icon->lang = strdup(DEFAULT_LOCALE);
-    app->icon = g_list_append(app->icon, icon);
-  }
-  return true;
-}
-
-template <typename T>
-bool StepParse::FillLabel(application_x* app, const T& label_list) {
-  if (label_list.empty())
-    return true;
-
-  for (const auto& control : label_list) {
-    label_x* label =
-          static_cast<label_x*>(calloc(1, sizeof(label_x)));
-    // NOTE: name is an attribute, but the xml writer uses it as text.
-    // This must be fixed in whole app-installer modules, including wgt.
-    // Current implementation is just for compatibility.
-    label->text = strdup(control.text().c_str());
-    label->name = strdup(control.name().c_str());
-    label->lang = !control.xml_lang().empty() ?
-        strdup(control.xml_lang().c_str()) : strdup(DEFAULT_LOCALE);
-    app->label = g_list_append(app->label, label);
-  }
-  return true;
-}
-
-template <typename T>
-bool StepParse::FillMetadata(application_x* app, const T& meta_data_list) {
-  if (meta_data_list.empty())
-    return true;
-
-  for (auto& meta : meta_data_list) {
-    metadata_x* metadata =
-        static_cast<metadata_x*>(calloc(1, sizeof(metadata_x)));
-    metadata->key = strdup(meta.key().c_str());
-    metadata->value = strdup(meta.val().c_str());
-    app->metadata = g_list_append(app->metadata, metadata);
-  }
-  return true;
-}
-
-bool StepParse::FillImage(application_x* app,
-                          const tpk::parse::ApplicationImagesInfo& image_list) {
-  for (auto& app_image : image_list.images) {
-    image_x* image =
-        static_cast<image_x*>(calloc(1, sizeof(image_x)));
-    image->name = strdup(app_image.name().c_str());
-    const std::string& lang = app_image.lang();
-    if (!lang.empty())
-      image->lang = strdup(lang.c_str());
-    else
-      image->lang = strdup(DEFAULT_LOCALE);
-    if (!app_image.section().empty())
-      image->section = strdup(app_image.section().c_str());
-    app->image = g_list_append(app->image, image);
-  }
-  return true;
-}
-
-bool StepParse::FillAccounts() {
-  std::shared_ptr<const AccountInfo> account_info =
-      std::static_pointer_cast<const AccountInfo>(parser_->GetManifestData(
-          app_keys::kAccountKey));
-  if (!account_info)
-    return true;
-
-  common_installer::AccountInfo info;
-  for (auto& account : account_info->accounts()) {
-    common_installer::SingleAccountInfo single_info;
-    single_info.capabilities = account.capabilities;
-    single_info.icon_paths = account.icon_paths;
-    single_info.multiple_account_support = account.multiple_account_support;
-    single_info.names = account.labels;
-    // appid has the same value as package
-    single_info.appid =  account.app_id;
-    single_info.providerid = account.provider_id;
-    info.set_account(single_info);
-  }
-  context_->manifest_plugins_data.get().account_info.set(info);
-  return true;
-}
-
-bool StepParse::FillShortcuts() {
-  std::shared_ptr<const ShortcutListInfo> shortcut_info =
-      std::static_pointer_cast<const ShortcutListInfo>(parser_->GetManifestData(
-          app_keys::kShortcutListKey));
-  if (!shortcut_info)
-    return true;
-
-  common_installer::ShortcutListInfo list;
-  for (auto& shortcut : shortcut_info->shortcuts) {
-    common_installer::ShortcutInfo single_info;
-    single_info.app_id = shortcut.app_id;
-    single_info.extra_data = shortcut.extra_data;
-    single_info.extra_key = shortcut.extra_key;
-    single_info.icon = shortcut.icon;
-    single_info.labels =  shortcut.labels;
-    list.push_back(single_info);
-  }
-  context_->manifest_plugins_data.get().shortcut_info.set(list);
-  return true;
-}
-
-template <typename T>
-bool StepParse::FillBackgroundCategoryInfo(application_x* app,
-    const T& background_category_data_list) {
-  for (const auto& background_category : background_category_data_list) {
-    app->background_category = g_list_append(
-        app->background_category, strdup(background_category.value().c_str()));
-  }
-
-  return true;
-}
-
-bool StepParse::FillManifestX(manifest_x* manifest) {
-  if (!FillPackageInfo(manifest))
-    return false;
-  if (!FillInstallationInfo(manifest))
-    return false;
-  if (!FillUIApplication(manifest))
-    return false;
-  if (!FillServiceApplication(manifest))
-    return false;
-  if (!FillWidgetApplication(manifest))
-    return false;
-  if (!FillPrivileges(manifest))
-    return false;
-  if (!FillAccounts())
-    return false;
-  if (!FillShortcuts())
-    return false;
-  return true;
-}
-
-common_installer::Step::Status StepParse::process() {
-  if (!LocateConfigFile()) {
-    LOG(ERROR) << "No manifest file exists";
-    return common_installer::Step::Status::MANIFEST_NOT_FOUND;
-  }
-  parser_.reset(new tpk::parse::TPKConfigParser());
-  if (!parser_->ParseManifest(path_)) {
-    LOG(ERROR) << "[Parse] Parse failed. " <<  parser_->GetErrorMessage();
-    return common_installer::Step::Status::PARSE_ERROR;
-  }
-
-  // Copy data from ManifestData to InstallerContext
-  std::shared_ptr<const PackageInfo> info =
-      std::static_pointer_cast<const PackageInfo>(
-          parser_->GetManifestData(
-              app_keys::kManifestKey));
-
-  context_->pkgid.set(info->package());
-
-  manifest_x* manifest =
-      static_cast<manifest_x*>(calloc(1, sizeof(manifest_x)));
-
-  if (!FillManifestX(const_cast<manifest_x*>(manifest))) {
-    LOG(ERROR) << "[Parse] Storing manifest_x failed. "
-               <<  parser_->GetErrorMessage();
-    return common_installer::Step::Status::PARSE_ERROR;
-  }
-
-  if (!context_->tep_path.get().empty())
-    manifest->tep_name = context_->tep_path.get().c_str();
-
-  // write pkgid for recovery file
-  if (context_->recovery_info.get().recovery_file) {
-    context_->recovery_info.get().recovery_file->set_pkgid(manifest->package);
-    context_->recovery_info.get().recovery_file->WriteAndCommitFileContent();
-  }
-
-  std::shared_ptr<const PrivilegesInfo> perm_info =
-      std::static_pointer_cast<const PrivilegesInfo>(
-          parser_->GetManifestData(
-              application_keys::kPrivilegesKey));
-  parser::PrivilegesSet privileges;
-  if (perm_info)
-    privileges = perm_info->GetPrivileges();
-
-  std::shared_ptr<const UIApplicationInfoList> ui_application_list =
-      std::static_pointer_cast<const UIApplicationInfoList>(
-          parser_->GetManifestData(app_keys::kUIApplicationKey));
-
-  LOG(DEBUG) << " Read data -[ ";
-  LOG(DEBUG) << "App package: " << info->package();
-  LOG(DEBUG) << "  aplication version     = " <<  info->version();
-  LOG(DEBUG) << "  api_version = " <<  info->api_version();
-  if (ui_application_list) {
-    LOG(DEBUG) << "  launch_modes -[";
-    for (const auto& application : ui_application_list->items) {
-      LOG(DEBUG) << "    launch_mode[" << application.app_info.appid() << "] = "
-        <<  application.app_info.launch_mode();
-    }
-  }
-  LOG(DEBUG) << "  ]-";
-  LOG(DEBUG) << "  privileges -[";
-  for (const auto& p : privileges) {
-    LOG(DEBUG) << "    " << p;
-  }
-  LOG(DEBUG) << "  ]-";
-  LOG(DEBUG) << "]-";
-
-  context_->manifest_data.set(manifest);
-  return common_installer::Step::Status::OK;
-}
-
-}  // namespace parse
-}  // namespace tpk
diff --git a/src/tpk/step/step_parse.h b/src/tpk/step/step_parse.h
deleted file mode 100644 (file)
index e60b6ca..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-// Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
-// Use of this source code is governed by an apache 2.0 license that can be
-// found in the LICENSE file.
-
-#ifndef TPK_STEP_STEP_PARSE_H_
-#define TPK_STEP_STEP_PARSE_H_
-
-#include <boost/filesystem.hpp>
-
-#include <common/app_installer.h>
-#include <common/installer_context.h>
-#include <common/step/step.h>
-
-#include <manifest_parser/utils/logging.h>
-#include <tpk_manifest_handlers/privileges_handler.h>
-#include <tpk_manifest_handlers/tpk_config_parser.h>
-#include <tpk_manifest_handlers/ui_and_service_application_infos.h>
-
-#include <memory>
-#include <set>
-#include <string>
-
-namespace tpk {
-namespace parse {
-
-class StepParse : public common_installer::Step {
- public:
-  using Step::Step;
-  explicit StepParse(common_installer::InstallerContext* context,
-      bool check_start_file);
-
-  Status process() override;
-  Status clean() override { return Status::OK; }
-  Status undo() override { return Status::OK; }
-  Status precheck() override;
-
- protected:
-  virtual bool LocateConfigFile();
-  // This function is needed by recovery mode to override searching
-  // of configuration file of the package
-  virtual boost::filesystem::path LocateConfigFile() const;
-  boost::filesystem::path path_;
-
- private:
-  bool FillInstallationInfo(manifest_x* manifest);
-  bool FillPackageInfo(manifest_x* manifest);
-  bool FillAuthorInfo(manifest_x* manifest);
-  bool FillDescription(manifest_x* manifest);
-  bool FillPrivileges(manifest_x* manifest);
-  bool FillWidgetApplication(manifest_x* manifest);
-  bool FillServiceApplication(manifest_x* manifest);
-  bool FillUIApplication(manifest_x* manifest);
-  template <typename T>
-      bool FillAppControl(application_x* manifest, const T& app_control_list);
-  template <typename T>
-      bool FillDataControl(application_x* manifest, const T& data_control_list);
-  template <typename T>
-      bool FillApplicationIconPaths(application_x* manifest,
-                                    const T& icons_info);
-  template <typename T>
-      bool FillLabel(application_x* manifest, const T& label_list);
-  template <typename T>
-      bool FillMetadata(application_x* manifest, const T& meta_data_list);
-  bool FillImage(application_x* app,
-                 const tpk::parse::ApplicationImagesInfo& label_list);
-  bool FillAccounts();
-  bool FillShortcuts();
-  template <typename T>
-  bool FillBackgroundCategoryInfo(application_x* app,
-      const T& background_category_data_list);
-  bool FillManifestX(manifest_x* manifest);
-
-  std::unique_ptr<tpk::parse::TPKConfigParser> parser_;
-
-  SCOPE_LOG_TAG(Parse)
-};
-
-}  // namespace parse
-}  // namespace tpk
-
-#endif  // TPK_STEP_STEP_PARSE_H_
diff --git a/src/tpk/step/step_parse_recovery.cc b/src/tpk/step/step_parse_recovery.cc
deleted file mode 100644 (file)
index f504f81..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
-// Use of this source code is governed by an apache-2.0 license that can be
-// found in the LICENSE file.
-
-#include "tpk/step/step_parse_recovery.h"
-
-#include <boost/filesystem/operations.hpp>
-
-#include <common/backup_paths.h>
-
-namespace bf = boost::filesystem;
-
-namespace {
-
-const char kManifestFileName[] = "tizen-manifest.xml";
-
-}  // namespace
-
-namespace tpk {
-namespace parse {
-
-common_installer::Step::Status StepParseRecovery::process() {
-  (void) StepParse::process();
-  return Status::OK;
-}
-
-
-common_installer::Step::Status StepParseRecovery::precheck() {
-  if (context_->root_application_path.get().empty()) {
-    LOG(ERROR) << "Root path of packages in not set";
-    return Status::INVALID_VALUE;
-  }
-  if (context_->pkgid.get().empty()) {
-    LOG(WARNING) << "Pkgid is not set. Parsing skipped";
-    return Status::OK;
-  }
-  return Status::OK;
-}
-
-boost::filesystem::path StepParseRecovery::LocateConfigFile() const {
-  context_->pkg_path.set(
-      context_->root_application_path.get() / context_->pkgid.get());
-  bf::path path1 = common_installer::GetBackupPathForPackagePath(
-      context_->pkg_path.get()) / kManifestFileName;
-  bf::path path2 = context_->pkg_path.get() / kManifestFileName;
-  if (bf::exists(path1))
-    return path1;
-  if (bf::exists(path2))
-    return path2;
-  return {};
-}
-
-}  // namespace parse
-}  // namespace tpk
-
diff --git a/src/tpk/step/step_parse_recovery.h b/src/tpk/step/step_parse_recovery.h
deleted file mode 100644 (file)
index 5522ed0..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
-// Use of this source code is governed by an apache-2.0 license that can be
-// found in the LICENSE file.
-
-#ifndef TPK_STEP_STEP_PARSE_RECOVERY_H_
-#define TPK_STEP_STEP_PARSE_RECOVERY_H_
-
-#include <boost/filesystem/path.hpp>
-
-#include <manifest_parser/utils/logging.h>
-
-#include "tpk/step/step_parse.h"
-
-namespace tpk {
-namespace parse {
-
-class StepParseRecovery : public StepParse {
- public:
-  using StepParse::StepParse;
-
-  Status process() override;
-  Status precheck() override;
-
- protected:
-  boost::filesystem::path LocateConfigFile() const override;
-
-  SCOPE_LOG_TAG(ParseRecovery)
-};
-}  // namespace parse
-}  // namespace tpk
-
-#endif  // TPK_STEP_STEP_PARSE_RECOVERY_H_
index 239def45c15e3a7d7eaa452a99a6fcb027f251bd..b4a211136433e4945f4d7604722a14e309e0b677 100644 (file)
@@ -15,9 +15,8 @@
 #include <common/step/step_delta_patch.h>
 #include <common/step/step_fail.h>
 #include <common/step/step_kill_apps.h>
-#include <common/step/step_old_manifest.h>
 #include <common/step/step_open_recovery_file.h>
-#include <common/step/step_parse.h>
+#include <common/step/step_parse_manifest.h>
 #include <common/step/step_privilege_compatibility.h>
 #include <common/step/step_recover_application.h>
 #include <common/step/step_recover_files.h>
@@ -41,8 +40,6 @@
 #include <common/step/step_update_tep.h>
 #include "tpk/step/step_check_tpk_background_category.h"
 #include "tpk/step/step_create_symbolic_link.h"
-#include "tpk/step/step_parse.h"
-#include "tpk/step/step_parse_recovery.h"
 #include "tpk/step/step_convert_xml.h"
 #include "tpk/step/step_tpk_patch_icons.h"
 
@@ -99,7 +96,9 @@ void TpkInstaller::Prepare() {
 void TpkInstaller::InstallSteps() {
   AddStep<ci::configuration::StepConfigure>(pkgmgr_);
   AddStep<ci::filesystem::StepUnzip>();
-  AddStep<tpk::parse::StepParse>();
+  AddStep<ci::parse::StepParseManifest>(
+      ci::parse::StepParseManifest::ManifestLocation::PACKAGE,
+      ci::parse::StepParseManifest::StoreLocation::NORMAL);
   AddStep<ci::security::StepCheckSignature>();
   AddStep<ci::security::StepPrivilegeCompatibility>();
   AddStep<tpk::security::StepCheckTpkBackgroundCategory>();
@@ -118,12 +117,16 @@ void TpkInstaller::InstallSteps() {
 void TpkInstaller::UpdateSteps() {
   AddStep<ci::configuration::StepConfigure>(pkgmgr_);
   AddStep<ci::filesystem::StepUnzip>();
-  AddStep<tpk::parse::StepParse>();
+  AddStep<ci::parse::StepParseManifest>(
+      ci::parse::StepParseManifest::ManifestLocation::PACKAGE,
+      ci::parse::StepParseManifest::StoreLocation::NORMAL);
   AddStep<ci::security::StepCheckSignature>();
   AddStep<ci::security::StepPrivilegeCompatibility>();
   AddStep<tpk::security::StepCheckTpkBackgroundCategory>();
   AddStep<ci::security::StepCheckOldCertificate>();
-  AddStep<ci::backup::StepOldManifest>();
+  AddStep<ci::parse::StepParseManifest>(
+      ci::parse::StepParseManifest::ManifestLocation::INSTALLED,
+      ci::parse::StepParseManifest::StoreLocation::BACKUP);
   AddStep<ci::pkgmgr::StepKillApps>();
   AddStep<ci::backup::StepBackupManifest>();
   AddStep<ci::backup::StepBackupIcons>();
@@ -143,7 +146,9 @@ void TpkInstaller::UpdateSteps() {
 
 void TpkInstaller::UninstallSteps() {
   AddStep<ci::configuration::StepConfigure>(pkgmgr_);
-  AddStep<ci::parse::StepParse>();
+  AddStep<ci::parse::StepParseManifest>(
+      ci::parse::StepParseManifest::ManifestLocation::INSTALLED,
+      ci::parse::StepParseManifest::StoreLocation::NORMAL);
   AddStep<ci::pkgmgr::StepKillApps>();
   AddStep<ci::backup::StepBackupManifest>();
   AddStep<ci::pkgmgr::StepUnregisterApplication>();
@@ -160,13 +165,17 @@ void TpkInstaller::ReinstallSteps() {
 void TpkInstaller::DeltaSteps() {
   AddStep<ci::configuration::StepConfigure>(pkgmgr_);
   AddStep<ci::filesystem::StepUnzip>();
-  AddStep<tpk::parse::StepParse>();
+  AddStep<ci::parse::StepParseManifest>(
+      ci::parse::StepParseManifest::ManifestLocation::PACKAGE,
+      ci::parse::StepParseManifest::StoreLocation::NORMAL);
   AddStep<ci::filesystem::StepDeltaPatch>();
   AddStep<ci::security::StepCheckSignature>();
   AddStep<ci::security::StepPrivilegeCompatibility>();
   AddStep<tpk::security::StepCheckTpkBackgroundCategory>();
   AddStep<ci::security::StepCheckOldCertificate>();
-  AddStep<ci::backup::StepOldManifest>();
+  AddStep<ci::parse::StepParseManifest>(
+      ci::parse::StepParseManifest::ManifestLocation::INSTALLED,
+      ci::parse::StepParseManifest::StoreLocation::BACKUP);
   AddStep<ci::pkgmgr::StepKillApps>();
   AddStep<ci::backup::StepBackupManifest>();
   AddStep<ci::backup::StepBackupIcons>();
@@ -183,7 +192,9 @@ void TpkInstaller::DeltaSteps() {
 void TpkInstaller::RecoverySteps() {
   AddStep<ci::configuration::StepConfigure>(pkgmgr_);
   AddStep<ci::recovery::StepOpenRecoveryFile>();
-  AddStep<tpk::parse::StepParseRecovery>();
+  AddStep<ci::parse::StepParseManifest>(
+      ci::parse::StepParseManifest::ManifestLocation::RECOVERY,
+      ci::parse::StepParseManifest::StoreLocation::NORMAL);
   AddStep<ci::pkgmgr::StepRecoverApplication>();
   AddStep<ci::filesystem::StepRemoveTemporaryDirectory>();
   AddStep<ci::filesystem::StepRecoverIcons>();
@@ -195,7 +206,9 @@ void TpkInstaller::RecoverySteps() {
 
 void TpkInstaller::ManifestDirectInstallSteps() {
   AddStep<ci::configuration::StepConfigure>(pkgmgr_);
-  AddStep<tpk::parse::StepParse>();
+  AddStep<ci::parse::StepParseManifest>(
+      ci::parse::StepParseManifest::ManifestLocation::INSTALLED,
+      ci::parse::StepParseManifest::StoreLocation::NORMAL);
   AddStep<ci::security::StepPrivilegeCompatibility>();
   AddStep<tpk::security::StepCheckTpkBackgroundCategory>();
   AddStep<ci::security::StepRollbackInstallationSecurity>();
@@ -205,7 +218,9 @@ void TpkInstaller::ManifestDirectInstallSteps() {
 
 void TpkInstaller::ManifestDirectUpdateSteps() {
   AddStep<ci::configuration::StepConfigure>(pkgmgr_);
-  AddStep<tpk::parse::StepParse>();
+  AddStep<ci::parse::StepParseManifest>(
+      ci::parse::StepParseManifest::ManifestLocation::INSTALLED,
+      ci::parse::StepParseManifest::StoreLocation::NORMAL);
   AddStep<ci::security::StepPrivilegeCompatibility>();
   AddStep<tpk::security::StepCheckTpkBackgroundCategory>();
   AddStep<ci::pkgmgr::StepKillApps>();