#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/watch_application_handler.h>
#include <tpk_manifest_handlers/widget_application_handler.h>
#include <chrono>
auto widget_application_list =
std::static_pointer_cast<const tpk::parse::WidgetApplicationInfoList>(
parser_->GetManifestData(app_keys::kWidgetApplicationKey));
+ auto watch_application_list =
+ std::static_pointer_cast<const tpk::parse::WatchApplicationInfoList>(
+ parser_->GetManifestData(app_keys::kWatchApplicationKey));
// mandatory check
if (!ui_application_list && !service_application_list &&
- !widget_application_list) {
+ !widget_application_list && !watch_application_list) {
LOG(ERROR) << "UI Application or Service Application or Widget Application "
- "are mandatory and has not been found.";
+ "or Watch Application are mandatory and has not been found.";
return false;
}
return true;
}
+bool StepParseManifest::FillWatchApplication(manifest_x* manifest) {
+ auto watch_application_list =
+ std::static_pointer_cast<const tpk::parse::WatchApplicationInfoList>(
+ parser_->GetManifestData(app_keys::kWatchApplicationKey));
+ if (!watch_application_list)
+ return true;
+
+ for (const auto& watch_application : watch_application_list->items) {
+ application_x* watch_app =
+ static_cast<application_x*>(calloc(1, sizeof(application_x)));
+ watch_app->appid = strdup(watch_application.app_info.appid().c_str());
+
+ if (bf::path(watch_application.app_info.exec().c_str()).is_absolute())
+ watch_app->exec = strdup(watch_application.app_info.exec().c_str());
+ else
+ watch_app->exec = strdup(
+ (context_->root_application_path.get()
+ / manifest->package / "bin" /
+ watch_application.app_info.exec()).c_str());
+ watch_app->nodisplay = strdup("false");
+ watch_app->multiple = strdup("false");
+ watch_app->type = strdup(watch_application.app_info.type().c_str());
+ watch_app->taskmanage = strdup("true");
+ watch_app->enabled = strdup("true");
+ watch_app->hwacceleration = strdup("default");
+ watch_app->screenreader = strdup("use-system-setting");
+ watch_app->mainapp = strdup("false");
+ watch_app->recentimage = strdup("false");
+ watch_app->launchcondition = strdup("false");
+ watch_app->indicatordisplay = strdup("true");
+ watch_app->effectimage_type = strdup("image");
+ watch_app->guestmode_visibility = strdup("true");
+ watch_app->permission_type = strdup("normal");
+ watch_app->component_type = strdup("watchapp");
+ watch_app->preload = strdup("false");
+ watch_app->submode = strdup("false");
+ watch_app->process_pool = strdup("false");
+ watch_app->autorestart = strdup("false");
+ watch_app->onboot = strdup("false");
+ watch_app->support_disable = strdup(manifest->support_disable);
+ watch_app->ui_gadget = strdup("false");
+ watch_app->launch_mode = strdup("single");
+ watch_app->ambient_support =
+ strdup(watch_application.app_info.ambient_support().c_str());
+ if (!FillLabel(watch_app, watch_application.label))
+ return false;
+ if (!FillApplicationIconPaths(watch_app, watch_application.app_icons))
+ return false;
+ manifest->application = g_list_append(manifest->application, watch_app);
+ }
+ return true;
+}
+
template <typename T>
bool StepParseManifest::FillAppControl(application_x* app,
const T& app_control_list) {
return false;
if (!FillWidgetApplication(manifest))
return false;
+ if (!FillWatchApplication(manifest))
+ return false;
if (!FillPrivileges(manifest))
return false;
if (!FillAuthorInfo(manifest))