+++ /dev/null
-subdir('server')
+++ /dev/null
-[Unit]
-Description=Server for testing UI testing
-
-[Service]
-Type=simple
-ExecStart=/usr/bin/aurum_bootstrap
-EnvironmentFile=-/run/tizen-system-env
+++ /dev/null
-#ifndef aurum_IMPL_H
-#define aurum_IMPL_H
-
-#include <grpcpp/grpcpp.h>
-#include "Commands/Command.h"
-#include "aurum.grpc.pb.h"
-
-class aurumServiceImpl final : public aurum::Bootstrap::Service {
-public:
- aurumServiceImpl();
- virtual ~aurumServiceImpl();
-
-protected:
- ::grpc::Status execute(Command *cmd);
-
-public:
- ::grpc::Status sync(::grpc::ServerContext * context,
- const ::aurum::ReqEmpty *request,
- ::aurum::RspEmpty * response) override;
- ::grpc::Status killServer(::grpc::ServerContext * context,
- const ::aurum::ReqEmpty *request,
- ::aurum::RspEmpty * response) override;
-
- ::grpc::Status findElement(::grpc::ServerContext * context,
- const ::aurum::ReqFindElement *request,
- ::aurum::RspFindElement *response) override;
-
- ::grpc::Status getValue(::grpc::ServerContext * context,
- const ::aurum::ReqGetValue *request,
- ::aurum::RspGetValue * response) override;
- ::grpc::Status setValue(::grpc::ServerContext * context,
- const ::aurum::ReqSetValue *request,
- ::aurum::RspSetValue * response) override;
- ::grpc::Status getAttribute(::grpc::ServerContext * context,
- const ::aurum::ReqGetAttribute *request,
- ::aurum::RspGetAttribute *response) override;
- ::grpc::Status getSize(::grpc::ServerContext * context,
- const ::aurum::ReqGetSize *request,
- ::aurum::RspGetSize * response) override;
- ::grpc::Status clear(::grpc::ServerContext * context,
- const ::aurum::ReqClear *request,
- ::aurum::RspClear * response) override;
- ::grpc::Status installApp(
- ::grpc::ServerContext * context,
- ::grpc::ServerReader< ::aurum::ReqInstallApp> *reader,
- ::aurum::RspInstallApp * response) override;
- ::grpc::Status removeApp(::grpc::ServerContext * context,
- const ::aurum::ReqRemoveApp *request,
- ::aurum::RspRemoveApp * response) override;
- ::grpc::Status getAppInfo(::grpc::ServerContext * context,
- const ::aurum::ReqGetAppInfo *request,
- ::aurum::RspGetAppInfo * response) override;
- ::grpc::Status launchApp(::grpc::ServerContext * context,
- const ::aurum::ReqLaunchApp *request,
- ::aurum::RspLaunchApp * response) override;
- ::grpc::Status closeApp(::grpc::ServerContext * context,
- const ::aurum::ReqCloseApp *request,
- ::aurum::RspCloseApp * response) override;
-
- ::grpc::Status click(::grpc::ServerContext * context,
- const ::aurum::ReqClick *request,
- ::aurum::RspClick * response) override;
- ::grpc::Status longClick(::grpc::ServerContext * context,
- const ::aurum::ReqClick *request,
- ::aurum::RspClick * response) override;
- ::grpc::Status flick(::grpc::ServerContext * context,
- const ::aurum::ReqFlick *request,
- ::aurum::RspFlick * response) override;
-
- ::grpc::Status touchDown(::grpc::ServerContext * context,
- const ::aurum::ReqTouchDown *request,
- ::aurum::RspTouchDown * response) override;
- ::grpc::Status touchUp(::grpc::ServerContext * context,
- const ::aurum::ReqTouchUp *request,
- ::aurum::RspTouchUp * response) override;
- ::grpc::Status touchMove(::grpc::ServerContext * context,
- const ::aurum::ReqTouchMove *request,
- ::aurum::RspTouchMove * response) override;
-
- ::grpc::Status getDeviceTime(::grpc::ServerContext * context,
- const ::aurum::ReqGetDeviceTime *request,
- ::aurum::RspGetDeviceTime *response) override;
- ::grpc::Status getLocation(::grpc::ServerContext * context,
- const ::aurum::ReqGetLocation *request,
- ::aurum::RspGetLocation *response) override;
- ::grpc::Status sendKey(::grpc::ServerContext *context,
- const ::aurum::ReqKey *request,
- ::aurum::RspKey * response) override;
-};
-
-#endif
\ No newline at end of file
+++ /dev/null
-#ifndef CLEAR_COMMAND_H
-#define CLEAR_COMMAND_H
-
-#include <gio/gio.h>
-#include <grpcpp/grpcpp.h>
-#include "Commands/Command.h"
-#include "ObjectMapper.h"
-#include "aurum.grpc.pb.h"
-#include "config.h"
-
-class ClearCommand : public Command {
-private:
- const ::aurum::ReqClear* mRequest;
- ::aurum::RspClear* mResponse;
-
-public:
- ClearCommand(const ::aurum::ReqClear* request, ::aurum::RspClear* response);
- ::grpc::Status execute() override;
-
-protected:
- bool hasHintText(UiObject *obj);
-};
-
-#endif
\ No newline at end of file
+++ /dev/null
-#ifndef CLICK_COMMAND_H
-#define CLICK_COMMAND_H
-
-#include <gio/gio.h>
-#include <grpcpp/grpcpp.h>
-#include "Commands/Command.h"
-#include "ObjectMapper.h"
-#include "aurum.grpc.pb.h"
-#include "config.h"
-class ClickCommand : public Command {
-protected:
- const ::aurum::ReqClick* mRequest;
- ::aurum::RspClick* mResponse;
-
-public:
- ClickCommand(const ::aurum::ReqClick* request, ::aurum::RspClick* response);
- ::grpc::Status execute() override;
- static std::unique_ptr<ClickCommand> createCommand(const ::aurum::ReqClick* request, ::aurum::RspClick* response);
-};
-
-class ClickElementCommand : public ClickCommand {
- using ClickCommand::ClickCommand;
-public:
- ::grpc::Status execute() override;
-};
-
-class ClickCoordCommand : public ClickCommand {
- using ClickCommand::ClickCommand;
-public:
- ::grpc::Status execute() override;
-};
-
-class ClickAtspiCommand : public ClickCommand {
- using ClickCommand::ClickCommand;
-public:
- ::grpc::Status execute() override;
-};
-
-#endif
\ No newline at end of file
+++ /dev/null
-#ifndef CLOSE_APP_COMMAND_H
-#define CLOSE_APP_COMMAND_H
-
-#include <gio/gio.h>
-#include <grpcpp/grpcpp.h>
-#include "Commands/Command.h"
-#include "ObjectMapper.h"
-#include "aurum.grpc.pb.h"
-#include "config.h"
-
-class CloseAppCommand : public Command {
-private:
- const ::aurum::ReqCloseApp* mRequest;
- ::aurum::RspCloseApp* mResponse;
-
-public:
- CloseAppCommand(const ::aurum::ReqCloseApp* request,
- ::aurum::RspCloseApp* response);
- ::grpc::Status execute() override;
- ::grpc::Status executePost() override;
-};
-
-#endif
\ No newline at end of file
+++ /dev/null
-#ifndef COMMAND_H
-#define COMMAND_H
-
-#include <gio/gio.h>
-#include <grpcpp/grpcpp.h>
-#include "ObjectMapper.h"
-#include "aurum.grpc.pb.h"
-
-#include "config.h"
-
-class Command {
-public:
- virtual ~Command(){};
- virtual ::grpc::Status execute() = 0;
- virtual ::grpc::Status executePost();
- virtual ::grpc::Status executePre();
-};
-
-#endif
\ No newline at end of file
+++ /dev/null
-#ifndef COMMANDS_H
-#define COMMANDS_H
-
-#include "Commands/KillServerCommand.h"
-#include "Commands/SyncCommand.h"
-
-#include "Commands/FindElementCommand.h"
-
-#include "Commands/GetAttributeCommand.h"
-#include "Commands/GetValueCommand.h"
-#include "Commands/SetValueCommand.h"
-
-#include "Commands/ClearCommand.h"
-#include "Commands/GetSizeCommand.h"
-
-#include "Commands/ClickCommand.h"
-#include "Commands/FlickCommand.h"
-#include "Commands/LongClickCommand.h"
-
-#include "Commands/TouchDownCommand.h"
-#include "Commands/TouchMoveCommand.h"
-#include "Commands/TouchUpCommand.h"
-
-#include "Commands/CloseAppCommand.h"
-#include "Commands/GetAppInfoCommand.h"
-#include "Commands/InstallAppCommand.h"
-#include "Commands/LaunchAppCommand.h"
-#include "Commands/RemoveAppCommand.h"
-
-#include "Commands/GetDeviceTimeCommand.h"
-#include "Commands/GetLocationCommand.h"
-#include "Commands/SendKeyCommand.h"
-
-#endif
\ No newline at end of file
+++ /dev/null
-#ifndef FIND_ELEMENT_COMMAND_H
-#define FIND_ELEMENT_COMMAND_H
-
-#include <gio/gio.h>
-#include <grpcpp/grpcpp.h>
-#include "Commands/Command.h"
-#include "ObjectMapper.h"
-#include "aurum.grpc.pb.h"
-#include "config.h"
-
-class FindElementCommand : public Command {
-protected:
- const ::aurum::ReqFindElement* mRequest;
- ::aurum::RspFindElement* mResponse;
-
-protected:
- ObjectMapper* mObjMap;
-
-public:
- FindElementCommand(const ::aurum::ReqFindElement* request,
- ::aurum::RspFindElement* response);
- ::grpc::Status execute() override;
-protected:
- virtual ISearchable* getSearchableTop(void);
- virtual std::shared_ptr<UiSelector> getSelector(void);
-};
-#endif
\ No newline at end of file
+++ /dev/null
-#ifndef FLICK_COMMAND_H
-#define FLICK_COMMAND_H
-
-#include <gio/gio.h>
-#include <grpcpp/grpcpp.h>
-#include "Commands/Command.h"
-#include "ObjectMapper.h"
-#include "aurum.grpc.pb.h"
-#include "config.h"
-
-class FlickCommand : public Command {
-private:
- const ::aurum::ReqFlick* mRequest;
- ::aurum::RspFlick* mResponse;
-
-public:
- FlickCommand(const ::aurum::ReqFlick* request, ::aurum::RspFlick* response);
- ;
- ::grpc::Status execute() override;
-};
-
-#endif
\ No newline at end of file
+++ /dev/null
-#ifndef IS_APP_INSTALLED_COMMAND_H
-#define IS_APP_INSTALLED_COMMAND_H
-
-#include <gio/gio.h>
-#include <grpcpp/grpcpp.h>
-#include "Commands/Command.h"
-#include "ObjectMapper.h"
-#include "aurum.grpc.pb.h"
-#include "config.h"
-
-class GetAppInfoCommand : public Command {
-private:
- const ::aurum::ReqGetAppInfo* mRequest;
- ::aurum::RspGetAppInfo* mResponse;
-
-public:
- GetAppInfoCommand(const ::aurum::ReqGetAppInfo* request,
- ::aurum::RspGetAppInfo* response);
- ;
- ::grpc::Status execute() override;
-};
-
-#endif
\ No newline at end of file
+++ /dev/null
-#ifndef GET_ATTRIBUTE_COMMAND_H
-#define GET_ATTRIBUTE_COMMAND_H
-
-#include <gio/gio.h>
-#include <grpcpp/grpcpp.h>
-#include "Commands/Command.h"
-#include "ObjectMapper.h"
-#include "aurum.grpc.pb.h"
-#include "config.h"
-
-class GetAttributeCommand : public Command {
-protected:
- const ::aurum::ReqGetAttribute* mRequest;
- ::aurum::RspGetAttribute* mResponse;
- ObjectMapper* mObjMap;
-
-public:
- GetAttributeCommand(const ::aurum::ReqGetAttribute* request,
- ::aurum::RspGetAttribute* response);
- ::grpc::Status execute() override;
- static std::unique_ptr<GetAttributeCommand> createCommand(const ::aurum::ReqGetAttribute* request,
- ::aurum::RspGetAttribute* response);
-};
-
-class GetVisibleAttributeCommand : public GetAttributeCommand {
- using GetAttributeCommand::GetAttributeCommand;
-public:
- ::grpc::Status execute() override;
-};
-
-class GetFocusedAttributeCommand : public GetAttributeCommand {
- using GetAttributeCommand::GetAttributeCommand;
-public:
- ::grpc::Status execute() override;
-};
-
-class GetFocusableAttributeCommand : public GetAttributeCommand {
- using GetAttributeCommand::GetAttributeCommand;
-public:
- ::grpc::Status execute() override;
-};
-
-class GetCheckableAttributeCommand : public GetAttributeCommand {
- using GetAttributeCommand::GetAttributeCommand;
-public:
- ::grpc::Status execute() override;
-};
-
-class GetCheckedAttributeCommand : public GetAttributeCommand {
- using GetAttributeCommand::GetAttributeCommand;
-public:
- ::grpc::Status execute() override;
-};
-
-class GetEnabledAttributeCommand : public GetAttributeCommand {
- using GetAttributeCommand::GetAttributeCommand;
-public:
- ::grpc::Status execute() override;
-};
-
-class GetClickableAttributeCommand : public GetAttributeCommand {
- using GetAttributeCommand::GetAttributeCommand;
-public:
- ::grpc::Status execute() override;
-};
-
-class GetScrollableAttributeCommand : public GetAttributeCommand {
- using GetAttributeCommand::GetAttributeCommand;
-public:
- ::grpc::Status execute() override;
-};
-
-class GetSelectableAttributeCommand : public GetAttributeCommand {
- using GetAttributeCommand::GetAttributeCommand;
-public:
- ::grpc::Status execute() override;
-};
-
-class GetSelectedAttributeCommand : public GetAttributeCommand {
- using GetAttributeCommand::GetAttributeCommand;
-public:
- ::grpc::Status execute() override;
-};
-
-#endif
\ No newline at end of file
+++ /dev/null
-#ifndef GET_DEVICE_TIME_COMMAND_H
-#define GET_DEVICE_TIME_COMMAND_H
-
-#include <gio/gio.h>
-#include <grpcpp/grpcpp.h>
-#include "Commands/Command.h"
-#include "ObjectMapper.h"
-#include "aurum.grpc.pb.h"
-#include "config.h"
-
-class GetDeviceTimeCommand : public Command {
-private:
- const ::aurum::ReqGetDeviceTime* mRequest;
- ::aurum::RspGetDeviceTime* mResponse;
-
-public:
- GetDeviceTimeCommand(const ::aurum::ReqGetDeviceTime* request,
- ::aurum::RspGetDeviceTime* response);
- ;
- ::grpc::Status execute() override;
-};
-
-#endif
\ No newline at end of file
+++ /dev/null
-#ifndef GET_LOCATION_COMMAND_H
-#define GET_LOCATION_COMMAND_H
-
-#include <gio/gio.h>
-#include <grpcpp/grpcpp.h>
-#include "Commands/Command.h"
-#include "ObjectMapper.h"
-#include "aurum.grpc.pb.h"
-#include "config.h"
-
-class GetLocationCommand : public Command {
-private:
- const ::aurum::ReqGetLocation* mRequest;
- ::aurum::RspGetLocation* mResponse;
-
-public:
- GetLocationCommand(const ::aurum::ReqGetLocation* request,
- ::aurum::RspGetLocation* response);
- ;
- ::grpc::Status execute() override;
-};
-
-#endif
\ No newline at end of file
+++ /dev/null
-#ifndef GET_SIZE_COMMAND_H
-#define GET_SIZE_COMMAND_H
-
-#include <gio/gio.h>
-#include <grpcpp/grpcpp.h>
-#include "Commands/Command.h"
-#include "ObjectMapper.h"
-#include "aurum.grpc.pb.h"
-#include "config.h"
-
-class GetSizeCommand : public Command {
-private:
- const ::aurum::ReqGetSize* mRequest;
- ::aurum::RspGetSize* mResponse;
-
-public:
- GetSizeCommand(const ::aurum::ReqGetSize* request,
- ::aurum::RspGetSize* response);
- ;
- ::grpc::Status execute() override;
-};
-
-#endif
\ No newline at end of file
+++ /dev/null
-#ifndef GET_VALUE_COMMAND_H
-#define GET_VALUE_COMMAND_H
-
-#include <gio/gio.h>
-#include <grpcpp/grpcpp.h>
-#include "Commands/Command.h"
-#include "ObjectMapper.h"
-#include "aurum.grpc.pb.h"
-#include "config.h"
-
-class GetValueCommand : public Command {
-private:
- const ::aurum::ReqGetValue* mRequest;
- ::aurum::RspGetValue* mResponse;
-
-public:
- GetValueCommand(const ::aurum::ReqGetValue* request,
- ::aurum::RspGetValue* response);
- ;
- ::grpc::Status execute() override;
-};
-
-#endif
\ No newline at end of file
+++ /dev/null
-#ifndef INSTALL_APP_COMMAND_H
-#define INSTALL_APP_COMMAND_H
-
-#include <gio/gio.h>
-#include <grpcpp/grpcpp.h>
-#include "Commands/Command.h"
-#include "ObjectMapper.h"
-#include "aurum.grpc.pb.h"
-#include "config.h"
-
-class InstallAppCommand : public Command {
-private:
- ::grpc::ServerReader< ::aurum::ReqInstallApp>* mRequest;
- ::aurum::RspInstallApp* mResponse;
-
-public:
- InstallAppCommand(::grpc::ServerReader< ::aurum::ReqInstallApp>* request,
- ::aurum::RspInstallApp* response);
- ::grpc::Status execute() override;
-};
-
-#endif
\ No newline at end of file
+++ /dev/null
-#ifndef KILL_SERVER_COMMAND_H
-#define KILL_SERVER_COMMAND_H
-
-#include <gio/gio.h>
-#include <grpcpp/grpcpp.h>
-#include "Commands/Command.h"
-#include "ObjectMapper.h"
-#include "aurum.grpc.pb.h"
-#include "config.h"
-
-class KillServerCommand : public Command {
-private:
- const ::aurum::ReqEmpty* mRequest;
- ::aurum::RspEmpty* mResponse;
-
-public:
- KillServerCommand(const ::aurum::ReqEmpty* request,
- ::aurum::RspEmpty* response);
- ;
- ::grpc::Status execute() override;
-};
-
-#endif
\ No newline at end of file
+++ /dev/null
-#ifndef LAUNCH_APP_COMMAND_H
-#define LAUNCH_APP_COMMAND_H
-
-#include <gio/gio.h>
-#include <grpcpp/grpcpp.h>
-#include "Commands/Command.h"
-#include "ObjectMapper.h"
-#include "aurum.grpc.pb.h"
-#include "config.h"
-
-class LaunchAppCommand : public Command {
-private:
- const ::aurum::ReqLaunchApp* mRequest;
- ::aurum::RspLaunchApp* mResponse;
-
-public:
- LaunchAppCommand(const ::aurum::ReqLaunchApp* request,
- ::aurum::RspLaunchApp* response);
- ::grpc::Status execute() override;
- ::grpc::Status executePost() override;
-};
-
-#endif
\ No newline at end of file
+++ /dev/null
-#ifndef LONG_CLICK_COMMAND_H
-#define LONG_CLICK_COMMAND_H
-
-#include <gio/gio.h>
-#include <grpcpp/grpcpp.h>
-#include "Commands/Command.h"
-#include "ObjectMapper.h"
-#include "aurum.grpc.pb.h"
-#include "config.h"
-
-class LongClickCommand : public Command {
-private:
- const ::aurum::ReqClick* mRequest;
- ::aurum::RspClick* mResponse;
-
-public:
- LongClickCommand(const ::aurum::ReqClick* request,
- ::aurum::RspClick* response);
- ::grpc::Status execute() override;
-private:
- const static unsigned int LOGNCLICK_INTERVAL = 50;
-};
-
-#endif
\ No newline at end of file
+++ /dev/null
-#ifndef POST_COMMAND_H
-#define POST_COMMAND_H
-
-#include <gio/gio.h>
-#include <grpcpp/grpcpp.h>
-#include "Commands/Command.h"
-#include "aurum.grpc.pb.h"
-#include "config.h"
-
-class PostCommand : public Command {
-private:
- Command *mCommand;
- PostCommand();
-
-public:
- PostCommand(Command *cmd);
- ::grpc::Status execute() override;
- ::grpc::Status executePre() override;
-};
-
-#endif
\ No newline at end of file
+++ /dev/null
-#ifndef PRE_COMMAND_H
-#define PRE_COMMAND_H
-
-#include <gio/gio.h>
-#include <grpcpp/grpcpp.h>
-#include "Commands/Command.h"
-#include "aurum.grpc.pb.h"
-#include "config.h"
-
-class PreCommand : public Command {
-private:
- Command *mCommand;
- PreCommand();
-
-public:
- PreCommand(Command *cmd);
- ::grpc::Status execute() override;
- ::grpc::Status executePost() override;
-};
-
-#endif
\ No newline at end of file
+++ /dev/null
-#ifndef REMOVE_APP_COMMAND_H
-#define REMOVE_APP_COMMAND_H
-
-#include <gio/gio.h>
-#include <grpcpp/grpcpp.h>
-#include "Commands/Command.h"
-#include "ObjectMapper.h"
-#include "aurum.grpc.pb.h"
-#include "config.h"
-
-class RemoveAppCommand : public Command {
-private:
- const ::aurum::ReqRemoveApp* mRequest;
- ::aurum::RspRemoveApp* mResponse;
-
-public:
- RemoveAppCommand(const ::aurum::ReqRemoveApp* request,
- ::aurum::RspRemoveApp* response);
- ;
- ::grpc::Status execute() override;
-};
-
-#endif
\ No newline at end of file
+++ /dev/null
-#ifndef SEND_KEY_COMMAND_H
-#define SEND_KEY_COMMAND_H
-
-#include <gio/gio.h>
-#include <grpcpp/grpcpp.h>
-#include "Commands/Command.h"
-#include "ObjectMapper.h"
-#include "aurum.grpc.pb.h"
-#include "config.h"
-
-class SendKeyCommand : public Command {
-private:
- const ::aurum::ReqKey* mRequest;
- ::aurum::RspKey* mResponse;
-
-public:
- SendKeyCommand(const ::aurum::ReqKey* request, ::aurum::RspKey* response);
- ::grpc::Status execute() override;
-};
-
-#endif
\ No newline at end of file
+++ /dev/null
-#ifndef SET_VALUE_COMMAND_H
-#define SET_VALUE_COMMAND_H
-
-#include <gio/gio.h>
-#include <grpcpp/grpcpp.h>
-#include "Commands/Command.h"
-#include "ObjectMapper.h"
-#include "aurum.grpc.pb.h"
-#include "config.h"
-
-class SetValueCommand : public Command {
-private:
- const ::aurum::ReqSetValue* mRequest;
- ::aurum::RspSetValue* mResponse;
-
-public:
- SetValueCommand(const ::aurum::ReqSetValue* request,
- ::aurum::RspSetValue* response);
- ::grpc::Status execute() override;
-};
-
-#endif
\ No newline at end of file
+++ /dev/null
-#ifndef SYNC_COMMAND_H
-#define SYNC_COMMAND_H
-
-#include <gio/gio.h>
-#include <grpcpp/grpcpp.h>
-#include "Commands/Command.h"
-#include "ObjectMapper.h"
-#include "aurum.grpc.pb.h"
-#include "config.h"
-
-class SyncCommand : public Command {
-private:
- const ::aurum::ReqEmpty* mRequest;
- ::aurum::RspEmpty* mResponse;
-
-public:
- SyncCommand(const ::aurum::ReqEmpty* request, ::aurum::RspEmpty* response);
- ::grpc::Status execute() override;
-};
-
-#endif
\ No newline at end of file
+++ /dev/null
-#ifndef TOUCH_DOWN_COMMAND_H
-#define TOUCH_DOWN_COMMAND_H
-
-#include <gio/gio.h>
-#include <grpcpp/grpcpp.h>
-#include "Commands/Command.h"
-#include "ObjectMapper.h"
-#include "aurum.grpc.pb.h"
-#include "config.h"
-
-class TouchDownCommand : public Command {
-private:
- const ::aurum::ReqTouchDown* mRequest;
- ::aurum::RspTouchDown* mResponse;
-
-public:
- TouchDownCommand(const ::aurum::ReqTouchDown* request,
- ::aurum::RspTouchDown* response);
- ::grpc::Status execute() override;
-};
-
-#endif
\ No newline at end of file
+++ /dev/null
-#ifndef TOUCH_MOVE_COMMAND_H
-#define TOUCH_MOVE_COMMAND_H
-
-#include <gio/gio.h>
-#include <grpcpp/grpcpp.h>
-#include "Commands/Command.h"
-#include "ObjectMapper.h"
-#include "aurum.grpc.pb.h"
-#include "config.h"
-
-class TouchMoveCommand : public Command {
-private:
- const ::aurum::ReqTouchMove* mRequest;
- ::aurum::RspTouchMove* mResponse;
-
-public:
- TouchMoveCommand(const ::aurum::ReqTouchMove* request,
- ::aurum::RspTouchMove* response);
- ::grpc::Status execute() override;
-};
-
-#endif
\ No newline at end of file
+++ /dev/null
-#ifndef TOUCH_UP_COMMAND_H
-#define TOUCH_UP_COMMAND_H
-
-#include <gio/gio.h>
-#include <grpcpp/grpcpp.h>
-#include "Commands/Command.h"
-#include "ObjectMapper.h"
-#include "aurum.grpc.pb.h"
-#include "config.h"
-
-class TouchUpCommand : public Command {
-private:
- const ::aurum::ReqTouchUp* mRequest;
- ::aurum::RspTouchUp* mResponse;
-
-public:
- TouchUpCommand(const ::aurum::ReqTouchUp* request,
- ::aurum::RspTouchUp* response);
- ::grpc::Status execute() override;
-};
-
-#endif
\ No newline at end of file
+++ /dev/null
-#ifndef OBJECT_MAPPER_H
-#define OBJECT_MAPPER_H
-
-#include <map>
-#include <string>
-
-#include "UiObject.h"
-
-class ObjectMapper {
-private:
- std::map<std::string, std::unique_ptr<UiObject>> mObjectMap;
- unsigned long long mObjCounter;
-
-private:
- ObjectMapper();
-
-public:
- ~ObjectMapper();
-
-public:
- static ObjectMapper *getInstance();
- std::string addElement(std::unique_ptr<UiObject> object);
- UiObject * getElement(const std::string &key);
-};
-
-#endif
\ No newline at end of file
+++ /dev/null
-bootstrap_svr_inc = [
- libaurum_inc,
- root_inc,
- include_directories('inc'),
- include_directories('inc/Commands'),
- loguru_inc,
-]
-
-bootstrap_svr_src = [
- files('src/BootstrapServer.cc'),
- files('src/AurumServiceImpl.cc'),
- files('src/ObjectMapper.cc'),
-]
-
-bootstrap_svr_src += [
- files('src/Commands/ClearCommand.cc'),
- files('src/Commands/ClickCommand.cc'),
- files('src/Commands/CloseAppCommand.cc'),
- files('src/Commands/FindElementCommand.cc'),
- files('src/Commands/FlickCommand.cc'),
- files('src/Commands/GetAttributeCommand.cc'),
- files('src/Commands/GetDeviceTimeCommand.cc'),
- files('src/Commands/GetLocationCommand.cc'),
- files('src/Commands/GetSizeCommand.cc'),
- files('src/Commands/GetValueCommand.cc'),
- files('src/Commands/InstallAppCommand.cc'),
- files('src/Commands/GetAppInfoCommand.cc'),
- files('src/Commands/LaunchAppCommand.cc'),
- files('src/Commands/LongClickCommand.cc'),
- files('src/Commands/RemoveAppCommand.cc'),
- files('src/Commands/SendKeyCommand.cc'),
- files('src/Commands/SetValueCommand.cc'),
- files('src/Commands/TouchDownCommand.cc'),
- files('src/Commands/TouchMoveCommand.cc'),
- files('src/Commands/TouchUpCommand.cc'),
- files('src/Commands/SyncCommand.cc'),
- files('src/Commands/KillServerCommand.cc'),
- files('src/Commands/Command.cc'),
- files('src/Commands/PreCommand.cc'),
- files('src/Commands/PostCommand.cc'),
-]
-
-bootstrap_svr_dep = [
- libaurum,
- grpc_deps,
- loguru_deps,
-]
-
-if get_option('tizen') == true
-bootstrap_svr_dep += [
- dependency('capi-appfw-app-control'),
- dependency('capi-appfw-app-manager'),
- dependency('capi-appfw-package-manager'),
-]
-endif
-
-bootstrap_svr_bin = executable(
- 'aurum_bootstrap',
- [bootstrap_svr_src, grpc_src, grpc_pb_src],
- dependencies: bootstrap_svr_dep,
- include_directories: bootstrap_svr_inc,
- link_with: libloguru,
- install:true,
- pie:true,
-)
-
-system_unit_dir = ''
-user_unit_dir = ''
-
-systemd = dependency('systemd', required: false)
-if systemd.found()
- user_unit_dir = systemd.get_pkgconfig_variable('systemduserunitdir')
-endif
-
-install_data('aurum-bootstrap.service', install_dir:user_unit_dir)
+++ /dev/null
-#include "AurumServiceImpl.h"
-
-#include <AccessibleWatcher.h>
-#include "Commands/Commands.h"
-#include "Commands/PostCommand.h"
-#include "Commands/PreCommand.h"
-
-#include "config.h"
-#include "loguru.hpp"
-
-using namespace grpc;
-using namespace aurum;
-
-aurumServiceImpl::aurumServiceImpl()
-{
- AccessibleWatcher::getInstance();
-}
-
-::grpc::Status aurumServiceImpl::execute(Command* cmd)
-{
- std::unique_ptr<PreCommand> proxyPreCmd = std::make_unique<PreCommand>(cmd);
- std::unique_ptr<PostCommand> proxyPostCmd = std::make_unique<PostCommand>(proxyPreCmd.get());
- ::grpc::Status rst = proxyPostCmd->execute();
- return rst;
-}
-
-aurumServiceImpl::~aurumServiceImpl() {}
-::grpc::Status aurumServiceImpl::aurumServiceImpl::sync(
- ::grpc::ServerContext* context, const ::aurum::ReqEmpty* request,
- ::aurum::RspEmpty* response)
-{
- std::unique_ptr<SyncCommand> cmd = std::make_unique<SyncCommand>(request, response);
- return execute(cmd.get());
-}
-::grpc::Status aurumServiceImpl::aurumServiceImpl::killServer(
- ::grpc::ServerContext* context, const ::aurum::ReqEmpty* request,
- ::aurum::RspEmpty* response)
-{
- std::unique_ptr<KillServerCommand> cmd = std::make_unique<KillServerCommand>(request, response);
- return execute(cmd.get());
-}
-::grpc::Status aurumServiceImpl::aurumServiceImpl::findElement(
- ::grpc::ServerContext* context, const ::aurum::ReqFindElement* request,
- ::aurum::RspFindElement* response)
-{
- std::unique_ptr<FindElementCommand> cmd = std::make_unique<FindElementCommand>(request, response);
- return execute(cmd.get());
-}
-
-::grpc::Status aurumServiceImpl::aurumServiceImpl::click(
- ::grpc::ServerContext* context, const ::aurum::ReqClick* request,
- ::aurum::RspClick* response)
-{
- std::unique_ptr<ClickCommand> cmd = ClickCommand::createCommand(request, response);
- return execute(cmd.get());
-}
-::grpc::Status aurumServiceImpl::getValue(::grpc::ServerContext* context,
- const ::aurum::ReqGetValue* request,
- ::aurum::RspGetValue* response)
-{
- std::unique_ptr<GetValueCommand> cmd = std::make_unique<GetValueCommand>(request, response);
- return execute(cmd.get());
-}
-::grpc::Status aurumServiceImpl::setValue(::grpc::ServerContext* context,
- const ::aurum::ReqSetValue* request,
- ::aurum::RspSetValue* response)
-{
- std::unique_ptr<SetValueCommand> cmd = std::make_unique<SetValueCommand>(request, response);
- return execute(cmd.get());
-}
-::grpc::Status aurumServiceImpl::getAttribute(
- ::grpc::ServerContext* context, const ::aurum::ReqGetAttribute* request,
- ::aurum::RspGetAttribute* response)
-{
- std::unique_ptr<GetAttributeCommand> cmd = GetAttributeCommand::createCommand(request, response);
- return execute(cmd.get());
-}
-::grpc::Status aurumServiceImpl::getSize(::grpc::ServerContext* context,
- const ::aurum::ReqGetSize* request,
- ::aurum::RspGetSize* response)
-{
- std::unique_ptr<GetSizeCommand> cmd = std::make_unique<GetSizeCommand>(request, response);
- return execute(cmd.get());
-}
-::grpc::Status aurumServiceImpl::clear(::grpc::ServerContext* context,
- const ::aurum::ReqClear* request,
- ::aurum::RspClear* response)
-{
- std::unique_ptr<ClearCommand> cmd = std::make_unique<ClearCommand>(request, response);
- return execute(cmd.get());
-}
-::grpc::Status aurumServiceImpl::installApp(
- ::grpc::ServerContext* context,
- ::grpc::ServerReader< ::aurum::ReqInstallApp>* request,
- ::aurum::RspInstallApp* response)
-{
- std::unique_ptr<InstallAppCommand> cmd = std::make_unique<InstallAppCommand>(request, response);
- return execute(cmd.get());
-}
-::grpc::Status aurumServiceImpl::removeApp(::grpc::ServerContext* context,
- const ::aurum::ReqRemoveApp* request,
- ::aurum::RspRemoveApp* response)
-{
- std::unique_ptr<RemoveAppCommand> cmd = std::make_unique<RemoveAppCommand>(request, response);
- return execute(cmd.get());
-}
-::grpc::Status aurumServiceImpl::getAppInfo(
- ::grpc::ServerContext* context, const ::aurum::ReqGetAppInfo* request,
- ::aurum::RspGetAppInfo* response)
-{
- std::unique_ptr<GetAppInfoCommand> cmd = std::make_unique<GetAppInfoCommand>(request, response);
- return execute(cmd.get());
-}
-::grpc::Status aurumServiceImpl::launchApp(::grpc::ServerContext* context,
- const ::aurum::ReqLaunchApp* request,
- ::aurum::RspLaunchApp* response)
-{
- std::unique_ptr<LaunchAppCommand> cmd = std::make_unique<LaunchAppCommand>(request, response);
- return execute(cmd.get());
-}
-::grpc::Status aurumServiceImpl::closeApp(::grpc::ServerContext* context,
- const ::aurum::ReqCloseApp* request,
- ::aurum::RspCloseApp* response)
-{
- std::unique_ptr<CloseAppCommand> cmd = std::make_unique<CloseAppCommand>(request, response);
- return execute(cmd.get());
-}
-::grpc::Status aurumServiceImpl::touchDown(::grpc::ServerContext* context,
- const ::aurum::ReqTouchDown* request,
- ::aurum::RspTouchDown* response)
-{
- std::unique_ptr<TouchDownCommand> cmd = std::make_unique<TouchDownCommand>(request, response);
- return execute(cmd.get());
-}
-::grpc::Status aurumServiceImpl::touchUp(::grpc::ServerContext* context,
- const ::aurum::ReqTouchUp* request,
- ::aurum::RspTouchUp* response)
-{
- std::unique_ptr<TouchUpCommand> cmd = std::make_unique<TouchUpCommand>(request, response);
- return execute(cmd.get());
-}
-::grpc::Status aurumServiceImpl::touchMove(::grpc::ServerContext* context,
- const ::aurum::ReqTouchMove* request,
- ::aurum::RspTouchMove* response)
-{
- std::unique_ptr<TouchMoveCommand> cmd = std::make_unique<TouchMoveCommand>(request, response);
- return execute(cmd.get());
-}
-::grpc::Status aurumServiceImpl::longClick(::grpc::ServerContext* context,
- const ::aurum::ReqClick* request,
- ::aurum::RspClick* response)
-{
- std::unique_ptr<LongClickCommand> cmd = std::make_unique<LongClickCommand>(request, response);
- return execute(cmd.get());
-}
-::grpc::Status aurumServiceImpl::flick(::grpc::ServerContext* context,
- const ::aurum::ReqFlick* request,
- ::aurum::RspFlick* response)
-{
- std::unique_ptr<FlickCommand> cmd = std::make_unique<FlickCommand>(request, response);
- return execute(cmd.get());
-}
-::grpc::Status aurumServiceImpl::getDeviceTime(
- ::grpc::ServerContext* context, const ::aurum::ReqGetDeviceTime* request,
- ::aurum::RspGetDeviceTime* response)
-{
- std::unique_ptr<GetDeviceTimeCommand> cmd = std::make_unique<GetDeviceTimeCommand>(request, response);
- return execute(cmd.get());
-}
-::grpc::Status aurumServiceImpl::getLocation(
- ::grpc::ServerContext* context, const ::aurum::ReqGetLocation* request,
- ::aurum::RspGetLocation* response)
-{
- std::unique_ptr<GetLocationCommand> cmd = std::make_unique<GetLocationCommand>(request, response);
- return execute(cmd.get());
-}
-::grpc::Status aurumServiceImpl::sendKey(::grpc::ServerContext* context,
- const ::aurum::ReqKey* request,
- ::aurum::RspKey* response)
-{
- std::unique_ptr<SendKeyCommand> cmd = std::make_unique<SendKeyCommand>(request, response);
- return execute(cmd.get());
-}
+++ /dev/null
-#include <iostream>
-#include <glib.h>
-
-#include <gio/gio.h>
-#include <grpcpp/grpcpp.h>
-#include "aurum.grpc.pb.h"
-
-#include "AurumServiceImpl.h"
-#include "config.h"
-#include "loguru.hpp"
-
-using namespace grpc;
-
-static gpointer
-_grpc_thread_func (gpointer data __attribute__((unused)))
-{
- std::string binding("0.0.0.0:50051");
- aurumServiceImpl service;
- ServerBuilder builder;
-
- LOG_F(INFO, "[T] Server Listening on %s", binding.c_str());
- builder.AddListeningPort(binding, grpc::InsecureServerCredentials());
- builder.RegisterService(&service);
- std::unique_ptr<Server> server(builder.BuildAndStart());
- server->Wait();
-
- return NULL;
-}
-
-int main(int argc, char **argv)
-{
- const char *logPath = "/tmp/ua.log";
- GMainLoop *loop;
-
- loguru::init(argc, argv);
- loguru::g_preamble = false;
- loguru::add_file(logPath, loguru::Append, loguru::Verbosity_MAX);
- LOG_SCOPE_F(INFO, "Log : %s", logPath);
-
- loop = g_main_loop_new ( NULL , FALSE );
- g_thread_new("grpc_thread", _grpc_thread_func, loop);
-
- g_main_loop_run (loop);
- g_main_loop_unref(loop);
-
- return 0;
-}
+++ /dev/null
-#include "ClearCommand.h"
-#include <UiObject.h>
-#include <loguru.hpp>
-#include <string>
-
-ClearCommand::ClearCommand(const ::aurum::ReqClear* request,
- ::aurum::RspClear* response)
- : mRequest{request}, mResponse{response}
-{
-}
-
-bool ClearCommand::hasHintText(UiObject *obj)
-{
- if (!obj) return false;
-
- auto old_text = obj->getText();
- obj->setText("");
- if (!old_text.compare(obj->getText())) {
- return true;
- } else {
- obj->setText(old_text);
- return false;
- }
-}
-
-::grpc::Status ClearCommand::execute()
-{
- LOG_SCOPE_F(INFO, "Clear --------------- ");
- ObjectMapper* mObjMap = ObjectMapper::getInstance();
- UiObject* obj = mObjMap->getElement(mRequest->elementid());
-
- if (obj) {
- obj->setText("");
- obj->refresh();
- auto text = obj->getText();
- if (text.length() != 0) {
- if (hasHintText(obj)) {
- mResponse->set_status(::aurum::RspStatus::OK);
- } else {
- mResponse->set_status(::aurum::RspStatus::ERROR);
- }
- } else {
- mResponse->set_status(::aurum::RspStatus::OK);
- }
- }
-
- return grpc::Status::OK;
-}
\ No newline at end of file
+++ /dev/null
-#include "ClickCommand.h"
-
-#include "UiObject.h"
-#include "UiDevice.h"
-
-#include <loguru.hpp>
-
-ClickCommand::ClickCommand(const ::aurum::ReqClick* request,
- ::aurum::RspClick* response)
- : mRequest{request}, mResponse{response}
-{
-}
-
-::grpc::Status ClickCommand::execute()
-{
- return grpc::Status::CANCELLED;
-}
-
-std::unique_ptr<ClickCommand> ClickCommand::createCommand(const ::aurum::ReqClick* request, ::aurum::RspClick* response)
-{
- ::aurum::ReqClick_RequestType type = request->type();
-
- if (type == ::aurum::ReqClick_RequestType::ReqClick_RequestType_ELEMENTID)
- return std::make_unique<ClickElementCommand>(request, response);
- else if (type == ::aurum::ReqClick_RequestType::ReqClick_RequestType_COORD)
- return std::make_unique<ClickCoordCommand>(request, response);
- else if (type == ::aurum::ReqClick_RequestType::ReqClick_RequestType_ATSPI)
- return std::make_unique<ClickAtspiCommand>(request, response);
- else
- return std::make_unique<ClickCommand>(request, response);
-}
-
-::grpc::Status ClickElementCommand::execute()
-{
- ObjectMapper* mObjMap = ObjectMapper::getInstance();
- UiObject* obj = mObjMap->getElement(mRequest->elementid());
-
- if (obj) {
- obj->click();
- mResponse->set_status(::aurum::RspStatus::OK);
- } else
- mResponse->set_status(::aurum::RspStatus::ERROR);
-
- return grpc::Status::OK;
-}
-
-::grpc::Status ClickCoordCommand::execute()
-{
- UiDevice* obj = UiDevice::getInstance(DeviceType::DEFAULT);
- const ::aurum::Point& point = mRequest->coordination();
- obj->click(point.x(), point.y());
- mResponse->set_status(::aurum::RspStatus::OK);
-}
-
-::grpc::Status ClickAtspiCommand::execute()
-{
- return grpc::Status::CANCELLED;
-}
+++ /dev/null
-#include "CloseAppCommand.h"
-#include <loguru.hpp>
-#include <chrono>
-#include <thread>
-#ifdef GBSBUILD
-#include <app_manager_extension.h>
-#endif
-
-CloseAppCommand::CloseAppCommand(const ::aurum::ReqCloseApp* request,
- ::aurum::RspCloseApp* response)
- : mRequest{request}, mResponse{response}
-{
-}
-
-::grpc::Status CloseAppCommand::execute()
-{
- LOG_SCOPE_F(INFO, "CloseApp --------------- ");
-#ifdef GBSBUILD
- std::string packageName = mRequest->packagename();
- app_context_h app_context = NULL;
-
- LOG_F(INFO, "close req : %s", packageName.c_str());
-
- int ret = app_manager_get_app_context(packageName.c_str(), &app_context);
- if (ret) {
- LOG_SCOPE_F(INFO, "Terminate Failed(1/2) Err Code : %d", ret);
- mResponse->set_status(::aurum::RspStatus::ERROR);
- return grpc::Status::OK;
- }
- ret = app_manager_terminate_app(app_context);
- if (ret) {
- LOG_SCOPE_F(INFO, "Terminate Failed(2/2) Err Code : %d", ret);
- mResponse->set_status(::aurum::RspStatus::ERROR);
- return grpc::Status::OK;
- }
-#endif
- return grpc::Status::OK;
-}
-
-::grpc::Status CloseAppCommand::executePost()
-{
- LOG_SCOPE_F(INFO, "CloseAppCommand::executePost");
- std::this_thread::sleep_for(std::chrono::milliseconds{1500});
- return grpc::Status::OK;
-}
\ No newline at end of file
+++ /dev/null
-#include "Command.h"
-#include <loguru.hpp>
-
-::grpc::Status Command::executePost()
-{
- return ::grpc::Status::OK;
-}
-
-::grpc::Status Command::executePre()
-{
- return ::grpc::Status::OK;
-}
+++ /dev/null
-#include "FindElementCommand.h"
-
-#include "ISearchable.h"
-
-#include "Sel.h"
-#include "UiDevice.h"
-#include "UiObject.h"
-#include "UiSelector.h"
-
-#include <loguru.hpp>
-
-FindElementCommand::FindElementCommand(const ::aurum::ReqFindElement* request,
- ::aurum::RspFindElement* response)
- : mRequest{request}, mResponse{response}
-{
- mObjMap = ObjectMapper::getInstance();
-}
-ISearchable* FindElementCommand::getSearchableTop(void)
-{
- ISearchable* searchableObj = nullptr;
- bool fromObject = mRequest->elementid().empty() == false;
-
- if (fromObject) searchableObj = mObjMap->getElement(mRequest->elementid());
- if (!searchableObj) searchableObj = UiDevice::getInstance(DeviceType::DEFAULT);
-
- return searchableObj;
-}
-std::shared_ptr<UiSelector> FindElementCommand::getSelector(void)
-{
- return Sel::text(mRequest->textfield());
-}
-
-::grpc::Status FindElementCommand::execute()
-{
- LOG_SCOPE_F(INFO, "findElement --------------- ");
- auto searchableObj = getSearchableTop();
- auto sel = getSelector();
-
- std::vector<std::unique_ptr<UiObject>> founds = searchableObj->findObjects(sel);
-
- if (founds.size() > 0) {
- for (auto& found : founds) {
- UiObject* obj = found.get();
- std::string key = mObjMap->addElement(std::move(found));
- LOG_F(INFO, "found object : %s key:%s",
- obj->getResourceName().c_str(), key.c_str());
- ::aurum::Element* elm = mResponse->add_elements();
- elm->set_elementid(key);
- }
- mResponse->set_status(::aurum::RspStatus::OK);
- }
-
- return grpc::Status::OK;
-}
\ No newline at end of file
+++ /dev/null
-#include "FlickCommand.h"
-#include <loguru.hpp>
-
-#include <UiDevice.h>
-
-FlickCommand::FlickCommand(const ::aurum::ReqFlick *request,
- ::aurum::RspFlick * response)
- : mRequest{request}, mResponse{response}
-{
-}
-
-::grpc::Status FlickCommand::execute()
-{
- LOG_SCOPE_F(INFO, "Flick --------------- ");
-
- const ::aurum::Point &startPoint = mRequest->startpoint();
- const ::aurum::Point &endPoint = mRequest->endpoint();
- int durationMs = mRequest->durationms();
-
- UiDevice *device = UiDevice::getInstance(DeviceType::DEFAULT);
- device->drag(startPoint.x(), startPoint.y(), endPoint.x(), endPoint.y(), durationMs);
- mResponse->set_status(::aurum::RspStatus::OK);
-
- return grpc::Status::OK;
-}
\ No newline at end of file
+++ /dev/null
-#include "GetAppInfoCommand.h"
-#include <loguru.hpp>
-#ifdef GBSBUILD
-#include <app_manager_extension.h>
-#include <package_manager.h>
-#endif
-
-GetAppInfoCommand::GetAppInfoCommand(const ::aurum::ReqGetAppInfo* request,
- ::aurum::RspGetAppInfo* response)
- : mRequest{request}, mResponse{response}
-{
-}
-
-::grpc::Status GetAppInfoCommand::execute()
-{
- LOG_SCOPE_F(INFO, "GetAppInfo --------------- ");
-#ifdef GBSBUILD
- std::string packageName = mRequest->packagename();
-
- app_context_h app_context;
- package_info_h package_info;
- app_state_e appState;
-
- char* label = nullptr;
- int ret = -1;
-
- mResponse->set_status(::aurum::RspStatus::OK);
- mResponse->set_isinstalled(false);
- mResponse->set_isrunning(false);
- mResponse->set_isfocused(false);
-
- if (!package_manager_get_package_info(packageName.c_str(), &package_info)) {
- if (!package_info_get_label(package_info, &label)) {
- if (label) {
- free(label);
- mResponse->set_isinstalled(true);
- }
- }
- }
-
- if (!app_manager_get_app_context(packageName.c_str(), &app_context)) {
- if (!app_context_get_app_state(app_context, &appState)) {
- mResponse->set_isfocused(appState & APP_STATE_FOREGROUND);
- mResponse->set_isrunning(!(appState & APP_STATE_TERMINATED));
- }
- }
-
-#endif
- return grpc::Status::OK;
-}
+++ /dev/null
-#include "GetAttributeCommand.h"
-#include <loguru.hpp>
-
-#include <UiDevice.h>
-#include <UiObject.h>
-
-GetAttributeCommand::GetAttributeCommand(
- const ::aurum::ReqGetAttribute* request, ::aurum::RspGetAttribute* response)
- : mRequest{request}, mResponse{response}, mObjMap{ObjectMapper::getInstance()}
-{
-}
-
-::grpc::Status GetAttributeCommand::execute()
-{
- return grpc::Status::CANCELLED;
-}
-
-std::unique_ptr<GetAttributeCommand> GetAttributeCommand::createCommand(const ::aurum::ReqGetAttribute* request,
- ::aurum::RspGetAttribute* response)
-{
- ::aurum::ReqGetAttribute_RequestType type = request->attribute();
-
- LOG_SCOPE_F(INFO, "type : %d", type);
-
- if (type == ::aurum::ReqGetAttribute_RequestType::ReqGetAttribute_RequestType_VISIBLE)
- return std::make_unique<GetVisibleAttributeCommand>(request, response);
- else if (type == ::aurum::ReqGetAttribute_RequestType::ReqGetAttribute_RequestType_FOCUSABLE)
- return std::make_unique<GetFocusableAttributeCommand>(request, response);
- else if (type == ::aurum::ReqGetAttribute_RequestType::ReqGetAttribute_RequestType_FOCUSED)
- return std::make_unique<GetFocusedAttributeCommand>(request, response);
- else if (type == ::aurum::ReqGetAttribute_RequestType::ReqGetAttribute_RequestType_ENABLED)
- return std::make_unique<GetEnabledAttributeCommand>(request, response);
- else if (type == ::aurum::ReqGetAttribute_RequestType::ReqGetAttribute_RequestType_CLICKABLE)
- return std::make_unique<GetClickableAttributeCommand>(request, response);
- else if (type == ::aurum::ReqGetAttribute_RequestType::ReqGetAttribute_RequestType_SCROLLABLE)
- return std::make_unique<GetScrollableAttributeCommand>(request, response);
- else if (type == ::aurum::ReqGetAttribute_RequestType::ReqGetAttribute_RequestType_CHECKABLE)
- return std::make_unique<GetCheckableAttributeCommand>(request, response);
- else if (type == ::aurum::ReqGetAttribute_RequestType::ReqGetAttribute_RequestType_CHECKED)
- return std::make_unique<GetCheckedAttributeCommand>(request, response);
- else if (type == ::aurum::ReqGetAttribute_RequestType::ReqGetAttribute_RequestType_SELECTED)
- return std::make_unique<GetSelectedAttributeCommand>(request, response);
- else if (type == ::aurum::ReqGetAttribute_RequestType::ReqGetAttribute_RequestType_SELECTABLE)
- return std::make_unique<GetSelectableAttributeCommand>(request, response);
- else
- return std::make_unique<GetAttributeCommand>(request, response);
-}
-
-::grpc::Status GetVisibleAttributeCommand::execute()
-{
- UiObject* obj = mObjMap->getElement(mRequest->elementid());
- if (!obj) {
- mResponse->set_boolvalue(false);
- mResponse->set_status(aurum::RspStatus::ERROR);
- return grpc::Status::OK;
- }
- mResponse->set_boolvalue(obj->isVisible());
- mResponse->set_status(aurum::RspStatus::OK);
- return grpc::Status::OK;
-}
-
-::grpc::Status GetFocusedAttributeCommand::execute()
-{
- UiObject* obj = mObjMap->getElement(mRequest->elementid());
- if (!obj) {
- mResponse->set_boolvalue(false);
- mResponse->set_status(aurum::RspStatus::ERROR);
- return grpc::Status::OK;
- }
- mResponse->set_boolvalue(obj->isFocused());
- mResponse->set_status(aurum::RspStatus::OK);
- return grpc::Status::OK;
-}
-
-::grpc::Status GetFocusableAttributeCommand::execute()
-{
- UiObject* obj = mObjMap->getElement(mRequest->elementid());
- if (!obj) {
- mResponse->set_boolvalue(false);
- mResponse->set_status(aurum::RspStatus::ERROR);
- return grpc::Status::OK;
- }
- mResponse->set_boolvalue(obj->isFocusable());
- mResponse->set_status(aurum::RspStatus::OK);
- return grpc::Status::OK;
-}
-
-::grpc::Status GetCheckableAttributeCommand::execute()
-{
- UiObject* obj = mObjMap->getElement(mRequest->elementid());
- if (!obj) {
- mResponse->set_boolvalue(false);
- mResponse->set_status(aurum::RspStatus::ERROR);
- return grpc::Status::OK;
- }
- mResponse->set_boolvalue(obj->isCheckable());
- mResponse->set_status(aurum::RspStatus::OK);
- return grpc::Status::OK;
-}
-
-::grpc::Status GetCheckedAttributeCommand::execute()
-{
- UiObject* obj = mObjMap->getElement(mRequest->elementid());
- if (!obj) {
- mResponse->set_boolvalue(false);
- mResponse->set_status(aurum::RspStatus::ERROR);
- return grpc::Status::OK;
- }
- mResponse->set_boolvalue(obj->isChecked());
- mResponse->set_status(aurum::RspStatus::OK);
- return grpc::Status::OK;
-}
-
-::grpc::Status GetEnabledAttributeCommand::execute()
-{
- UiObject* obj = mObjMap->getElement(mRequest->elementid());
- if (!obj) {
- mResponse->set_boolvalue(false);
- mResponse->set_status(aurum::RspStatus::ERROR);
- return grpc::Status::OK;
- }
- mResponse->set_boolvalue(obj->isEnabled());
- mResponse->set_status(aurum::RspStatus::OK);
- return grpc::Status::OK;
-}
-
-::grpc::Status GetClickableAttributeCommand::execute()
-{
- UiObject* obj = mObjMap->getElement(mRequest->elementid());
- if (!obj) {
- mResponse->set_boolvalue(false);
- mResponse->set_status(aurum::RspStatus::ERROR);
- return grpc::Status::OK;
- }
- mResponse->set_boolvalue(obj->isClickable());
- mResponse->set_status(aurum::RspStatus::OK);
- return grpc::Status::OK;
-}
-
-::grpc::Status GetScrollableAttributeCommand::execute()
-{
- UiObject* obj = mObjMap->getElement(mRequest->elementid());
- if (!obj) {
- mResponse->set_boolvalue(false);
- mResponse->set_status(aurum::RspStatus::ERROR);
- return grpc::Status::OK;
- }
- mResponse->set_boolvalue(obj->isScrollable());
- mResponse->set_status(aurum::RspStatus::OK);
- return grpc::Status::OK;
-}
-
-::grpc::Status GetSelectableAttributeCommand::execute()
-{
- UiObject* obj = mObjMap->getElement(mRequest->elementid());
- if (!obj) {
- mResponse->set_boolvalue(false);
- mResponse->set_status(aurum::RspStatus::ERROR);
- return grpc::Status::OK;
- }
- mResponse->set_boolvalue(obj->isSelectable());
- mResponse->set_status(aurum::RspStatus::OK);
- return grpc::Status::OK;
-}
-
-::grpc::Status GetSelectedAttributeCommand::execute()
-{
- UiObject* obj = mObjMap->getElement(mRequest->elementid());
- if (!obj) {
- mResponse->set_boolvalue(false);
- mResponse->set_status(aurum::RspStatus::ERROR);
- return grpc::Status::OK;
- }
- mResponse->set_boolvalue(obj->isSelected());
- mResponse->set_status(aurum::RspStatus::OK);
- return grpc::Status::OK;
-}
+++ /dev/null
-#include "GetDeviceTimeCommand.h"
-#include <loguru.hpp>
-
-GetDeviceTimeCommand::GetDeviceTimeCommand(
- const ::aurum::ReqGetDeviceTime* request,
- ::aurum::RspGetDeviceTime* response)
- : mRequest{request}, mResponse{response}
-{
-}
-
-::grpc::Status GetDeviceTimeCommand::execute()
-{
- LOG_SCOPE_F(INFO, "GetDeviceTime --------------- ");
- // ObjectMapper *mObjMap = ObjectMapper::getInstance();
- return grpc::Status::OK;
-}
\ No newline at end of file
+++ /dev/null
-#include "GetLocationCommand.h"
-#include <loguru.hpp>
-
-GetLocationCommand::GetLocationCommand(const ::aurum::ReqGetLocation* request,
- ::aurum::RspGetLocation* response)
- : mRequest{request}, mResponse{response}
-{
-}
-
-::grpc::Status GetLocationCommand::execute()
-{
- LOG_SCOPE_F(INFO, "CliGetLocation --------------- ");
- // ObjectMapper *mObjMap = ObjectMapper::getInstance();
- return grpc::Status::OK;
-}
\ No newline at end of file
+++ /dev/null
-#include "GetSizeCommand.h"
-#include <loguru.hpp>
-
-#include <UiObject.h>
-
-GetSizeCommand::GetSizeCommand(const ::aurum::ReqGetSize* request,
- ::aurum::RspGetSize* response)
- : mRequest{request}, mResponse{response}
-{
-}
-
-::grpc::Status GetSizeCommand::execute()
-{
- LOG_SCOPE_F(INFO, "GetSize --------------- ");
- ObjectMapper *mObjMap = ObjectMapper::getInstance();
- UiObject* obj = mObjMap->getElement(mRequest->elementid());
- if (obj) {
- const Rect<int> &size = obj->getBoundingBox();
- ::aurum::Rect rect;
- rect.set_x(size.mTopLeft.x);
- rect.set_y(size.mTopLeft.y);
- rect.set_width(size.width());
- rect.set_height(size.height());
- mResponse->mutable_size()->CopyFrom(rect);
- }
-
- return grpc::Status::OK;
-}
\ No newline at end of file
+++ /dev/null
-#include "GetValueCommand.h"
-#include <loguru.hpp>
-
-#include <UiObject.h>
-
-GetValueCommand::GetValueCommand(const ::aurum::ReqGetValue* request,
- ::aurum::RspGetValue* response)
- : mRequest{request}, mResponse{response}
-{
-}
-
-::grpc::Status GetValueCommand::execute()
-{
- LOG_SCOPE_F(INFO, "GetValue --------------- ");
- ObjectMapper* mObjMap = ObjectMapper::getInstance();
- UiObject* obj = mObjMap->getElement(mRequest->elementid());
-
- if (obj) {
- std::string text = obj->getText();
- mResponse->set_stringvalue(text.c_str());
- mResponse->set_status(::aurum::RspStatus::OK);
- }
-
- return grpc::Status::OK;
-}
\ No newline at end of file
+++ /dev/null
-#include "InstallAppCommand.h"
-#include <fstream>
-#include <loguru.hpp>
-#ifdef GBSBUILD
-#include <package_manager.h>
-#endif
-
-InstallAppCommand::InstallAppCommand(
- ::grpc::ServerReader<::aurum::ReqInstallApp> *request,
- ::aurum::RspInstallApp * response)
- : mRequest{request}, mResponse{response}
-{
-}
-
-::grpc::Status InstallAppCommand::execute()
-{
- LOG_SCOPE_F(INFO, "InstallApp --------------- ");
-#ifdef GBSBUILD
- ::aurum::ReqInstallApp chunk;
-
- std::ofstream outfile("/tmp/app.tpk", std::ofstream::binary);
-
- while (mRequest->Read(&chunk)) {
- std::size_t size = chunk.package().length();
- const char *bufptr = chunk.package().c_str();
- outfile.write(bufptr, size);
- }
- outfile.close();
-
- package_manager_request_h pkgRequest;
- int id;
-
- package_manager_request_create(&pkgRequest);
- package_manager_request_install(pkgRequest, "/tmp/app.tpk", &id);
-#endif
- return grpc::Status::OK;
-}
\ No newline at end of file
+++ /dev/null
-#include "KillServerCommand.h"
-#include <loguru.hpp>
-
-KillServerCommand::KillServerCommand(const ::aurum::ReqEmpty* request,
- ::aurum::RspEmpty* response)
- : mRequest{request}, mResponse{response}
-{
-}
-
-::grpc::Status KillServerCommand::execute()
-{
- LOG_SCOPE_F(INFO, "Kill Server ");
-
- exit(1);
-
- return grpc::Status::OK;
-}
\ No newline at end of file
+++ /dev/null
-#include "LaunchAppCommand.h"
-#include <loguru.hpp>
-#include <chrono>
-#include <thread>
-
-#ifdef GBSBUILD
-#include <app_control.h>
-#endif
-
-LaunchAppCommand::LaunchAppCommand(const ::aurum::ReqLaunchApp* request,
- ::aurum::RspLaunchApp* response)
- : mRequest{request}, mResponse{response}
-{
-}
-
-::grpc::Status LaunchAppCommand::execute()
-{
- LOG_SCOPE_F(INFO, "LaunchApp --------------- ");
-#ifdef GBSBUILD
- app_control_h appControl;
- std::string packageName = mRequest->packagename();
- int ret = -1;
-
- if (packageName.empty()) return grpc::Status::OK;
-
- ret = app_control_create(&appControl);
- if (ret) {
- LOG_SCOPE_F(INFO, "Launch Failed(1/3) Err Code : %ull", ret);
- mResponse->set_status(::aurum::RspStatus::ERROR);
- return grpc::Status::OK;
- }
-
- ret = app_control_set_app_id(appControl, packageName.c_str());
- if (ret) {
- LOG_SCOPE_F(INFO, "Launch Failed(2/3) Err Code : %ull", ret);
- mResponse->set_status(::aurum::RspStatus::ERROR);
- return grpc::Status::OK;
- }
-
- ret = app_control_send_launch_request(appControl, NULL, NULL);
- if (ret) {
- LOG_SCOPE_F(INFO, "Launch Failed(3/3) Err Code : %ull", ret);
- mResponse->set_status(::aurum::RspStatus::ERROR);
- return grpc::Status::OK;
- }
-#endif
- return grpc::Status::OK;
-}
-::grpc::Status LaunchAppCommand::executePost()
-{
- LOG_SCOPE_F(INFO, "LaunchAppCommand::executePost");
- std::this_thread::sleep_for(std::chrono::milliseconds{1500});
- return grpc::Status::OK;
-}
\ No newline at end of file
+++ /dev/null
-#include "LongClickCommand.h"
-#include <loguru.hpp>
-
-#include <UiObject.h>
-#include <UiDevice.h>
-
-LongClickCommand::LongClickCommand(const ::aurum::ReqClick* request,
- ::aurum::RspClick* response)
- : mRequest{request}, mResponse{response}
-{
-}
-
-::grpc::Status LongClickCommand::execute()
-{
- LOG_SCOPE_F(INFO, "LongClick --------------- ");
-
- ObjectMapper* mObjMap = ObjectMapper::getInstance();
- ::aurum::ReqClick_RequestType type = mRequest->type();
-
- if (type == ::aurum::ReqClick_RequestType_ELEMENTID) {
- UiObject* obj = mObjMap->getElement(mRequest->elementid());
- if (obj) {
- obj->longClick(LOGNCLICK_INTERVAL);
- mResponse->set_status(::aurum::RspStatus::OK);
- } else
- mResponse->set_status(::aurum::RspStatus::ERROR);
- } else if (type == ::aurum::ReqClick_RequestType_COORD) {
- UiDevice* obj = UiDevice::getInstance(DeviceType::DEFAULT);
- const ::aurum::Point& point = mRequest->coordination();
- obj->click(point.x(), point.y(), LOGNCLICK_INTERVAL);
- mResponse->set_status(::aurum::RspStatus::OK);
- } else if (type == ::aurum::ReqClick_RequestType_ATSPI) {
- mResponse->set_status(::aurum::RspStatus::ERROR);
- }
-
- return grpc::Status::OK;
-}
\ No newline at end of file
+++ /dev/null
-#include "PostCommand.h"
-#include <atspi/atspi.h>
-#include <loguru.hpp>
-
-PostCommand::PostCommand() : PostCommand(nullptr) {}
-PostCommand::PostCommand(Command *cmd) : mCommand{cmd} {}
-
-::grpc::Status PostCommand::execute()
-{
- ::grpc::Status rst = mCommand->execute();
- LOG_SCOPE_F(INFO, "PostCommand --------------- ");
- mCommand->executePost();
- // do post-command
- return rst;
-}
-
-::grpc::Status PostCommand::executePre()
-{
- return mCommand->executePre();
-}
\ No newline at end of file
+++ /dev/null
-#include "PreCommand.h"
-#include <atspi/atspi.h>
-#include <loguru.hpp>
-
-PreCommand::PreCommand() : PreCommand(nullptr) {}
-PreCommand::PreCommand(Command *cmd) : mCommand{cmd} {}
-
-::grpc::Status PreCommand::execute()
-{
- {
- LOG_SCOPE_F(INFO, "PreCommand --------------- ");
- AtspiAccessible *n = atspi_get_desktop(0);
- if (n) {
- char *name = atspi_accessible_get_name(n, NULL);
- if(name) free(name);
- g_object_unref(n);
- }
- }
- mCommand->executePre();
- return mCommand->execute();
-}
-
-::grpc::Status PreCommand::executePost()
-{
- return mCommand->executePost();
-}
\ No newline at end of file
+++ /dev/null
-#include "RemoveAppCommand.h"
-#include <loguru.hpp>
-#ifdef GBSBUILD
-#include <package_manager.h>
-#endif
-
-RemoveAppCommand::RemoveAppCommand(const ::aurum::ReqRemoveApp* request,
- ::aurum::RspRemoveApp* response)
- : mRequest{request}, mResponse{response}
-{
-}
-
-::grpc::Status RemoveAppCommand::execute()
-{
- LOG_SCOPE_F(INFO, "RemoveApp --------------- ");
-#ifdef GBSBUILD
- package_manager_request_h pkgRequest;
- std::string name = mRequest->packagename();
- int id;
- LOG_F(INFO, "package name :%s", name.c_str());
-
- package_manager_request_create(&pkgRequest);
- package_manager_request_uninstall(pkgRequest, name.c_str(), &id);
-#endif
-
- return grpc::Status::OK;
-}
\ No newline at end of file
+++ /dev/null
-#include "SendKeyCommand.h"
-#include <loguru.hpp>
-
-#include <UiDevice.h>
-
-SendKeyCommand::SendKeyCommand(const ::aurum::ReqKey* request,
- ::aurum::RspKey* response)
- : mRequest{request}, mResponse{response}
-{
-}
-
-::grpc::Status SendKeyCommand::execute()
-{
- LOG_SCOPE_F(INFO, "SendKey --------------- ");
- UiDevice* mDevice = UiDevice::getInstance(DeviceType::DEFAULT);
- ::aurum::ReqKey_KeyType type = mRequest->type();
-
- if (type == ::aurum::ReqKey_KeyType::ReqKey_KeyType_BACK)
- mDevice->pressBack();
- else if (type == ::aurum::ReqKey_KeyType::ReqKey_KeyType_HOME)
- mDevice->pressHome();
- else if (type == ::aurum::ReqKey_KeyType::ReqKey_KeyType_MENU)
- mDevice->pressMenu();
- else if (type == ::aurum::ReqKey_KeyType::ReqKey_KeyType_VOLUP)
- mDevice->pressVolUp();
- else if (type == ::aurum::ReqKey_KeyType::ReqKey_KeyType_VOLDOWN)
- mDevice->pressVolDown();
- else if (type == ::aurum::ReqKey_KeyType::ReqKey_KeyType_POWER)
- mDevice->pressPower();
- else if (type == ::aurum::ReqKey_KeyType::ReqKey_KeyType_KEY) {
- ; // TODO
- }
- else if (type == ::aurum::ReqKey_KeyType::ReqKey_KeyType_XF86) {
- ; // TODO
- }
- return grpc::Status::OK;
-}
\ No newline at end of file
+++ /dev/null
-#include "SetValueCommand.h"
-#include <loguru.hpp>
-
-SetValueCommand::SetValueCommand(const ::aurum::ReqSetValue* request,
- ::aurum::RspSetValue* response)
- : mRequest{request}, mResponse{response}
-{
-}
-
-::grpc::Status SetValueCommand::execute()
-{
- LOG_SCOPE_F(INFO, "SetValue (text:%s) --------------- ", mRequest->stringvalue().c_str());
- ObjectMapper* mObjMap = ObjectMapper::getInstance();
- UiObject* obj = mObjMap->getElement(mRequest->elementid());
- if (obj) obj->setText(const_cast<std::string&>(mRequest->stringvalue()));
- return grpc::Status::OK;
-}
\ No newline at end of file
+++ /dev/null
-#include "SyncCommand.h"
-#include <loguru.hpp>
-
-#include <AccessibleWatcher.h>
-#include <AccessibleNode.h>
-
-SyncCommand::SyncCommand(const ::aurum::ReqEmpty *request,
- ::aurum::RspEmpty * response)
- : mRequest{request}, mResponse{response}
-{
-}
-
-::grpc::Status SyncCommand::execute()
-{
- LOG_SCOPE_F(INFO, "Sync Command ");
- const AccessibleWatcher *accObj = AccessibleWatcher::getInstance();
-
- auto root = accObj->getRootNode();
- LOG_F(INFO, "root node tree / depth : 2");
- root->print(0, 2);
-
- return grpc::Status::OK;
-}
\ No newline at end of file
+++ /dev/null
-#include "TouchDownCommand.h"
-#include <UiDevice.h>
-#include <loguru.hpp>
-
-TouchDownCommand::TouchDownCommand(const ::aurum::ReqTouchDown* request,
- ::aurum::RspTouchDown* response)
- : mRequest{request}, mResponse{response}
-{
-}
-
-::grpc::Status TouchDownCommand::execute()
-{
- LOG_SCOPE_F(INFO, "TouchDown --------------- ");
- const aurum::Point& point_ = mRequest->coordination();
- mResponse->set_seqid(0);
- UiDevice::getInstance(DeviceType::DEFAULT)
- ->touchDown(point_.x(), point_.y());
- return grpc::Status::OK;
-}
\ No newline at end of file
+++ /dev/null
-#include "TouchMoveCommand.h"
-#include <UiDevice.h>
-#include <loguru.hpp>
-
-TouchMoveCommand::TouchMoveCommand(const ::aurum::ReqTouchMove* request,
- ::aurum::RspTouchMove* response)
- : mRequest{request}, mResponse{response}
-{
-}
-
-::grpc::Status TouchMoveCommand::execute()
-{
- LOG_SCOPE_F(INFO, "TouchMove --------------- ");
- const aurum::Point& point = mRequest->coordination();
- UiDevice::getInstance(DeviceType::DEFAULT)->touchMove(point.x(), point.y());
- return grpc::Status::OK;
-}
\ No newline at end of file
+++ /dev/null
-#include "TouchUpCommand.h"
-#include <UiDevice.h>
-#include <loguru.hpp>
-
-TouchUpCommand::TouchUpCommand(const ::aurum::ReqTouchUp* request,
- ::aurum::RspTouchUp* response)
- : mRequest{request}, mResponse{response}
-{
-}
-
-::grpc::Status TouchUpCommand::execute()
-{
- LOG_SCOPE_F(INFO, "TouchUp --------------- ");
- const aurum::Point& point = mRequest->coordination();
- UiDevice::getInstance(DeviceType::DEFAULT)->touchUp(point.x(), point.y());
- return grpc::Status::OK;
-}
\ No newline at end of file
+++ /dev/null
-#include "ObjectMapper.h"
-
-ObjectMapper::ObjectMapper() : mObjectMap{}, mObjCounter{0} {}
-
-ObjectMapper::~ObjectMapper() {}
-
-ObjectMapper *ObjectMapper::getInstance()
-{
- static ObjectMapper *mInstance = new ObjectMapper();
- return mInstance;
-}
-
-std::string ObjectMapper::addElement(std::unique_ptr<UiObject> object)
-{
- ++mObjCounter;
- std::string key = std::to_string(mObjCounter);
- mObjectMap[key] = std::move(object);
- return key;
-}
-
-UiObject *ObjectMapper::getElement(const std::string &key)
-{
- unsigned long long keyCnt = (unsigned long long)std::stoll(key); // this key is a result of calling std:to_string(mObjCounter)
- if (keyCnt <= 0 || keyCnt > mObjCounter) return nullptr;
- if (mObjectMap.count(key)) {
- UiObject *obj = mObjectMap[key].get();
- const_cast<const UiObject *>(obj)->refresh();
- return obj;
- }
- return nullptr;
-}
subdir('protocol')
subdir('libloguru')
subdir('libaurum')
-subdir('bootstrap')
+subdir('org.tizen.aurum-bootstrap')
subdir('tests')
configure_file(
value: false,
description: 'enable tizen specific dependancy'
)
-
-
+option('tzapp_path',
+ type: 'string',
+ value: '/usr/apps/',
+ description: 'installation path for tizen app binary'
+)
+option('tzpackage_path',
+ type: 'string',
+ value: '/usr/share/packages/',
+ description: 'installation path for registering tizen service app'
+)
--- /dev/null
+#ifndef aurum_IMPL_H
+#define aurum_IMPL_H
+
+#include <grpcpp/grpcpp.h>
+#include "Commands/Command.h"
+#include "aurum.grpc.pb.h"
+
+class aurumServiceImpl final : public aurum::Bootstrap::Service {
+public:
+ aurumServiceImpl();
+ virtual ~aurumServiceImpl();
+
+protected:
+ ::grpc::Status execute(Command *cmd);
+
+public:
+ ::grpc::Status sync(::grpc::ServerContext * context,
+ const ::aurum::ReqEmpty *request,
+ ::aurum::RspEmpty * response) override;
+ ::grpc::Status killServer(::grpc::ServerContext * context,
+ const ::aurum::ReqEmpty *request,
+ ::aurum::RspEmpty * response) override;
+
+ ::grpc::Status findElement(::grpc::ServerContext * context,
+ const ::aurum::ReqFindElement *request,
+ ::aurum::RspFindElement *response) override;
+
+ ::grpc::Status getValue(::grpc::ServerContext * context,
+ const ::aurum::ReqGetValue *request,
+ ::aurum::RspGetValue * response) override;
+ ::grpc::Status setValue(::grpc::ServerContext * context,
+ const ::aurum::ReqSetValue *request,
+ ::aurum::RspSetValue * response) override;
+ ::grpc::Status getAttribute(::grpc::ServerContext * context,
+ const ::aurum::ReqGetAttribute *request,
+ ::aurum::RspGetAttribute *response) override;
+ ::grpc::Status getSize(::grpc::ServerContext * context,
+ const ::aurum::ReqGetSize *request,
+ ::aurum::RspGetSize * response) override;
+ ::grpc::Status clear(::grpc::ServerContext * context,
+ const ::aurum::ReqClear *request,
+ ::aurum::RspClear * response) override;
+ ::grpc::Status installApp(
+ ::grpc::ServerContext * context,
+ ::grpc::ServerReader< ::aurum::ReqInstallApp> *reader,
+ ::aurum::RspInstallApp * response) override;
+ ::grpc::Status removeApp(::grpc::ServerContext * context,
+ const ::aurum::ReqRemoveApp *request,
+ ::aurum::RspRemoveApp * response) override;
+ ::grpc::Status getAppInfo(::grpc::ServerContext * context,
+ const ::aurum::ReqGetAppInfo *request,
+ ::aurum::RspGetAppInfo * response) override;
+ ::grpc::Status launchApp(::grpc::ServerContext * context,
+ const ::aurum::ReqLaunchApp *request,
+ ::aurum::RspLaunchApp * response) override;
+ ::grpc::Status closeApp(::grpc::ServerContext * context,
+ const ::aurum::ReqCloseApp *request,
+ ::aurum::RspCloseApp * response) override;
+
+ ::grpc::Status click(::grpc::ServerContext * context,
+ const ::aurum::ReqClick *request,
+ ::aurum::RspClick * response) override;
+ ::grpc::Status longClick(::grpc::ServerContext * context,
+ const ::aurum::ReqClick *request,
+ ::aurum::RspClick * response) override;
+ ::grpc::Status flick(::grpc::ServerContext * context,
+ const ::aurum::ReqFlick *request,
+ ::aurum::RspFlick * response) override;
+
+ ::grpc::Status touchDown(::grpc::ServerContext * context,
+ const ::aurum::ReqTouchDown *request,
+ ::aurum::RspTouchDown * response) override;
+ ::grpc::Status touchUp(::grpc::ServerContext * context,
+ const ::aurum::ReqTouchUp *request,
+ ::aurum::RspTouchUp * response) override;
+ ::grpc::Status touchMove(::grpc::ServerContext * context,
+ const ::aurum::ReqTouchMove *request,
+ ::aurum::RspTouchMove * response) override;
+
+ ::grpc::Status getDeviceTime(::grpc::ServerContext * context,
+ const ::aurum::ReqGetDeviceTime *request,
+ ::aurum::RspGetDeviceTime *response) override;
+ ::grpc::Status getLocation(::grpc::ServerContext * context,
+ const ::aurum::ReqGetLocation *request,
+ ::aurum::RspGetLocation *response) override;
+ ::grpc::Status sendKey(::grpc::ServerContext *context,
+ const ::aurum::ReqKey *request,
+ ::aurum::RspKey * response) override;
+};
+
+#endif
\ No newline at end of file
--- /dev/null
+#ifndef CLEAR_COMMAND_H
+#define CLEAR_COMMAND_H
+
+#include <gio/gio.h>
+#include <grpcpp/grpcpp.h>
+#include "Commands/Command.h"
+#include "ObjectMapper.h"
+#include "aurum.grpc.pb.h"
+#include "config.h"
+
+class ClearCommand : public Command {
+private:
+ const ::aurum::ReqClear* mRequest;
+ ::aurum::RspClear* mResponse;
+
+public:
+ ClearCommand(const ::aurum::ReqClear* request, ::aurum::RspClear* response);
+ ::grpc::Status execute() override;
+
+protected:
+ bool hasHintText(UiObject *obj);
+};
+
+#endif
\ No newline at end of file
--- /dev/null
+#ifndef CLICK_COMMAND_H
+#define CLICK_COMMAND_H
+
+#include <gio/gio.h>
+#include <grpcpp/grpcpp.h>
+#include "Commands/Command.h"
+#include "ObjectMapper.h"
+#include "aurum.grpc.pb.h"
+#include "config.h"
+class ClickCommand : public Command {
+protected:
+ const ::aurum::ReqClick* mRequest;
+ ::aurum::RspClick* mResponse;
+
+public:
+ ClickCommand(const ::aurum::ReqClick* request, ::aurum::RspClick* response);
+ ::grpc::Status execute() override;
+ static std::unique_ptr<ClickCommand> createCommand(const ::aurum::ReqClick* request, ::aurum::RspClick* response);
+};
+
+class ClickElementCommand : public ClickCommand {
+ using ClickCommand::ClickCommand;
+public:
+ ::grpc::Status execute() override;
+};
+
+class ClickCoordCommand : public ClickCommand {
+ using ClickCommand::ClickCommand;
+public:
+ ::grpc::Status execute() override;
+};
+
+class ClickAtspiCommand : public ClickCommand {
+ using ClickCommand::ClickCommand;
+public:
+ ::grpc::Status execute() override;
+};
+
+#endif
\ No newline at end of file
--- /dev/null
+#ifndef CLOSE_APP_COMMAND_H
+#define CLOSE_APP_COMMAND_H
+
+#include <gio/gio.h>
+#include <grpcpp/grpcpp.h>
+#include "Commands/Command.h"
+#include "ObjectMapper.h"
+#include "aurum.grpc.pb.h"
+#include "config.h"
+
+class CloseAppCommand : public Command {
+private:
+ const ::aurum::ReqCloseApp* mRequest;
+ ::aurum::RspCloseApp* mResponse;
+
+public:
+ CloseAppCommand(const ::aurum::ReqCloseApp* request,
+ ::aurum::RspCloseApp* response);
+ ::grpc::Status execute() override;
+ ::grpc::Status executePost() override;
+};
+
+#endif
\ No newline at end of file
--- /dev/null
+#ifndef COMMAND_H
+#define COMMAND_H
+
+#include <gio/gio.h>
+#include <grpcpp/grpcpp.h>
+#include "ObjectMapper.h"
+#include "aurum.grpc.pb.h"
+
+#include "config.h"
+
+class Command {
+public:
+ virtual ~Command(){};
+ virtual ::grpc::Status execute() = 0;
+ virtual ::grpc::Status executePost();
+ virtual ::grpc::Status executePre();
+};
+
+#endif
\ No newline at end of file
--- /dev/null
+#ifndef COMMANDS_H
+#define COMMANDS_H
+
+#include "Commands/KillServerCommand.h"
+#include "Commands/SyncCommand.h"
+
+#include "Commands/FindElementCommand.h"
+
+#include "Commands/GetAttributeCommand.h"
+#include "Commands/GetValueCommand.h"
+#include "Commands/SetValueCommand.h"
+
+#include "Commands/ClearCommand.h"
+#include "Commands/GetSizeCommand.h"
+
+#include "Commands/ClickCommand.h"
+#include "Commands/FlickCommand.h"
+#include "Commands/LongClickCommand.h"
+
+#include "Commands/TouchDownCommand.h"
+#include "Commands/TouchMoveCommand.h"
+#include "Commands/TouchUpCommand.h"
+
+#include "Commands/CloseAppCommand.h"
+#include "Commands/GetAppInfoCommand.h"
+#include "Commands/InstallAppCommand.h"
+#include "Commands/LaunchAppCommand.h"
+#include "Commands/RemoveAppCommand.h"
+
+#include "Commands/GetDeviceTimeCommand.h"
+#include "Commands/GetLocationCommand.h"
+#include "Commands/SendKeyCommand.h"
+
+#endif
\ No newline at end of file
--- /dev/null
+#ifndef FIND_ELEMENT_COMMAND_H
+#define FIND_ELEMENT_COMMAND_H
+
+#include <gio/gio.h>
+#include <grpcpp/grpcpp.h>
+#include "Commands/Command.h"
+#include "ObjectMapper.h"
+#include "aurum.grpc.pb.h"
+#include "config.h"
+
+class FindElementCommand : public Command {
+protected:
+ const ::aurum::ReqFindElement* mRequest;
+ ::aurum::RspFindElement* mResponse;
+
+protected:
+ ObjectMapper* mObjMap;
+
+public:
+ FindElementCommand(const ::aurum::ReqFindElement* request,
+ ::aurum::RspFindElement* response);
+ ::grpc::Status execute() override;
+protected:
+ virtual ISearchable* getSearchableTop(void);
+ virtual std::shared_ptr<UiSelector> getSelector(void);
+};
+#endif
\ No newline at end of file
--- /dev/null
+#ifndef FLICK_COMMAND_H
+#define FLICK_COMMAND_H
+
+#include <gio/gio.h>
+#include <grpcpp/grpcpp.h>
+#include "Commands/Command.h"
+#include "ObjectMapper.h"
+#include "aurum.grpc.pb.h"
+#include "config.h"
+
+class FlickCommand : public Command {
+private:
+ const ::aurum::ReqFlick* mRequest;
+ ::aurum::RspFlick* mResponse;
+
+public:
+ FlickCommand(const ::aurum::ReqFlick* request, ::aurum::RspFlick* response);
+ ;
+ ::grpc::Status execute() override;
+};
+
+#endif
\ No newline at end of file
--- /dev/null
+#ifndef IS_APP_INSTALLED_COMMAND_H
+#define IS_APP_INSTALLED_COMMAND_H
+
+#include <gio/gio.h>
+#include <grpcpp/grpcpp.h>
+#include "Commands/Command.h"
+#include "ObjectMapper.h"
+#include "aurum.grpc.pb.h"
+#include "config.h"
+
+class GetAppInfoCommand : public Command {
+private:
+ const ::aurum::ReqGetAppInfo* mRequest;
+ ::aurum::RspGetAppInfo* mResponse;
+
+public:
+ GetAppInfoCommand(const ::aurum::ReqGetAppInfo* request,
+ ::aurum::RspGetAppInfo* response);
+ ;
+ ::grpc::Status execute() override;
+};
+
+#endif
\ No newline at end of file
--- /dev/null
+#ifndef GET_ATTRIBUTE_COMMAND_H
+#define GET_ATTRIBUTE_COMMAND_H
+
+#include <gio/gio.h>
+#include <grpcpp/grpcpp.h>
+#include "Commands/Command.h"
+#include "ObjectMapper.h"
+#include "aurum.grpc.pb.h"
+#include "config.h"
+
+class GetAttributeCommand : public Command {
+protected:
+ const ::aurum::ReqGetAttribute* mRequest;
+ ::aurum::RspGetAttribute* mResponse;
+ ObjectMapper* mObjMap;
+
+public:
+ GetAttributeCommand(const ::aurum::ReqGetAttribute* request,
+ ::aurum::RspGetAttribute* response);
+ ::grpc::Status execute() override;
+ static std::unique_ptr<GetAttributeCommand> createCommand(const ::aurum::ReqGetAttribute* request,
+ ::aurum::RspGetAttribute* response);
+};
+
+class GetVisibleAttributeCommand : public GetAttributeCommand {
+ using GetAttributeCommand::GetAttributeCommand;
+public:
+ ::grpc::Status execute() override;
+};
+
+class GetFocusedAttributeCommand : public GetAttributeCommand {
+ using GetAttributeCommand::GetAttributeCommand;
+public:
+ ::grpc::Status execute() override;
+};
+
+class GetFocusableAttributeCommand : public GetAttributeCommand {
+ using GetAttributeCommand::GetAttributeCommand;
+public:
+ ::grpc::Status execute() override;
+};
+
+class GetCheckableAttributeCommand : public GetAttributeCommand {
+ using GetAttributeCommand::GetAttributeCommand;
+public:
+ ::grpc::Status execute() override;
+};
+
+class GetCheckedAttributeCommand : public GetAttributeCommand {
+ using GetAttributeCommand::GetAttributeCommand;
+public:
+ ::grpc::Status execute() override;
+};
+
+class GetEnabledAttributeCommand : public GetAttributeCommand {
+ using GetAttributeCommand::GetAttributeCommand;
+public:
+ ::grpc::Status execute() override;
+};
+
+class GetClickableAttributeCommand : public GetAttributeCommand {
+ using GetAttributeCommand::GetAttributeCommand;
+public:
+ ::grpc::Status execute() override;
+};
+
+class GetScrollableAttributeCommand : public GetAttributeCommand {
+ using GetAttributeCommand::GetAttributeCommand;
+public:
+ ::grpc::Status execute() override;
+};
+
+class GetSelectableAttributeCommand : public GetAttributeCommand {
+ using GetAttributeCommand::GetAttributeCommand;
+public:
+ ::grpc::Status execute() override;
+};
+
+class GetSelectedAttributeCommand : public GetAttributeCommand {
+ using GetAttributeCommand::GetAttributeCommand;
+public:
+ ::grpc::Status execute() override;
+};
+
+#endif
\ No newline at end of file
--- /dev/null
+#ifndef GET_DEVICE_TIME_COMMAND_H
+#define GET_DEVICE_TIME_COMMAND_H
+
+#include <gio/gio.h>
+#include <grpcpp/grpcpp.h>
+#include "Commands/Command.h"
+#include "ObjectMapper.h"
+#include "aurum.grpc.pb.h"
+#include "config.h"
+
+class GetDeviceTimeCommand : public Command {
+private:
+ const ::aurum::ReqGetDeviceTime* mRequest;
+ ::aurum::RspGetDeviceTime* mResponse;
+
+public:
+ GetDeviceTimeCommand(const ::aurum::ReqGetDeviceTime* request,
+ ::aurum::RspGetDeviceTime* response);
+ ;
+ ::grpc::Status execute() override;
+};
+
+#endif
\ No newline at end of file
--- /dev/null
+#ifndef GET_LOCATION_COMMAND_H
+#define GET_LOCATION_COMMAND_H
+
+#include <gio/gio.h>
+#include <grpcpp/grpcpp.h>
+#include "Commands/Command.h"
+#include "ObjectMapper.h"
+#include "aurum.grpc.pb.h"
+#include "config.h"
+
+class GetLocationCommand : public Command {
+private:
+ const ::aurum::ReqGetLocation* mRequest;
+ ::aurum::RspGetLocation* mResponse;
+
+public:
+ GetLocationCommand(const ::aurum::ReqGetLocation* request,
+ ::aurum::RspGetLocation* response);
+ ;
+ ::grpc::Status execute() override;
+};
+
+#endif
\ No newline at end of file
--- /dev/null
+#ifndef GET_SIZE_COMMAND_H
+#define GET_SIZE_COMMAND_H
+
+#include <gio/gio.h>
+#include <grpcpp/grpcpp.h>
+#include "Commands/Command.h"
+#include "ObjectMapper.h"
+#include "aurum.grpc.pb.h"
+#include "config.h"
+
+class GetSizeCommand : public Command {
+private:
+ const ::aurum::ReqGetSize* mRequest;
+ ::aurum::RspGetSize* mResponse;
+
+public:
+ GetSizeCommand(const ::aurum::ReqGetSize* request,
+ ::aurum::RspGetSize* response);
+ ;
+ ::grpc::Status execute() override;
+};
+
+#endif
\ No newline at end of file
--- /dev/null
+#ifndef GET_VALUE_COMMAND_H
+#define GET_VALUE_COMMAND_H
+
+#include <gio/gio.h>
+#include <grpcpp/grpcpp.h>
+#include "Commands/Command.h"
+#include "ObjectMapper.h"
+#include "aurum.grpc.pb.h"
+#include "config.h"
+
+class GetValueCommand : public Command {
+private:
+ const ::aurum::ReqGetValue* mRequest;
+ ::aurum::RspGetValue* mResponse;
+
+public:
+ GetValueCommand(const ::aurum::ReqGetValue* request,
+ ::aurum::RspGetValue* response);
+ ;
+ ::grpc::Status execute() override;
+};
+
+#endif
\ No newline at end of file
--- /dev/null
+#ifndef INSTALL_APP_COMMAND_H
+#define INSTALL_APP_COMMAND_H
+
+#include <gio/gio.h>
+#include <grpcpp/grpcpp.h>
+#include "Commands/Command.h"
+#include "ObjectMapper.h"
+#include "aurum.grpc.pb.h"
+#include "config.h"
+
+class InstallAppCommand : public Command {
+private:
+ ::grpc::ServerReader< ::aurum::ReqInstallApp>* mRequest;
+ ::aurum::RspInstallApp* mResponse;
+
+public:
+ InstallAppCommand(::grpc::ServerReader< ::aurum::ReqInstallApp>* request,
+ ::aurum::RspInstallApp* response);
+ ::grpc::Status execute() override;
+};
+
+#endif
\ No newline at end of file
--- /dev/null
+#ifndef KILL_SERVER_COMMAND_H
+#define KILL_SERVER_COMMAND_H
+
+#include <gio/gio.h>
+#include <grpcpp/grpcpp.h>
+#include "Commands/Command.h"
+#include "ObjectMapper.h"
+#include "aurum.grpc.pb.h"
+#include "config.h"
+
+class KillServerCommand : public Command {
+private:
+ const ::aurum::ReqEmpty* mRequest;
+ ::aurum::RspEmpty* mResponse;
+
+public:
+ KillServerCommand(const ::aurum::ReqEmpty* request,
+ ::aurum::RspEmpty* response);
+ ;
+ ::grpc::Status execute() override;
+};
+
+#endif
\ No newline at end of file
--- /dev/null
+#ifndef LAUNCH_APP_COMMAND_H
+#define LAUNCH_APP_COMMAND_H
+
+#include <gio/gio.h>
+#include <grpcpp/grpcpp.h>
+#include "Commands/Command.h"
+#include "ObjectMapper.h"
+#include "aurum.grpc.pb.h"
+#include "config.h"
+
+class LaunchAppCommand : public Command {
+private:
+ const ::aurum::ReqLaunchApp* mRequest;
+ ::aurum::RspLaunchApp* mResponse;
+
+public:
+ LaunchAppCommand(const ::aurum::ReqLaunchApp* request,
+ ::aurum::RspLaunchApp* response);
+ ::grpc::Status execute() override;
+ ::grpc::Status executePost() override;
+};
+
+#endif
\ No newline at end of file
--- /dev/null
+#ifndef LONG_CLICK_COMMAND_H
+#define LONG_CLICK_COMMAND_H
+
+#include <gio/gio.h>
+#include <grpcpp/grpcpp.h>
+#include "Commands/Command.h"
+#include "ObjectMapper.h"
+#include "aurum.grpc.pb.h"
+#include "config.h"
+
+class LongClickCommand : public Command {
+private:
+ const ::aurum::ReqClick* mRequest;
+ ::aurum::RspClick* mResponse;
+
+public:
+ LongClickCommand(const ::aurum::ReqClick* request,
+ ::aurum::RspClick* response);
+ ::grpc::Status execute() override;
+private:
+ const static unsigned int LOGNCLICK_INTERVAL = 50;
+};
+
+#endif
\ No newline at end of file
--- /dev/null
+#ifndef POST_COMMAND_H
+#define POST_COMMAND_H
+
+#include <gio/gio.h>
+#include <grpcpp/grpcpp.h>
+#include "Commands/Command.h"
+#include "aurum.grpc.pb.h"
+#include "config.h"
+
+class PostCommand : public Command {
+private:
+ Command *mCommand;
+ PostCommand();
+
+public:
+ PostCommand(Command *cmd);
+ ::grpc::Status execute() override;
+ ::grpc::Status executePre() override;
+};
+
+#endif
\ No newline at end of file
--- /dev/null
+#ifndef PRE_COMMAND_H
+#define PRE_COMMAND_H
+
+#include <gio/gio.h>
+#include <grpcpp/grpcpp.h>
+#include "Commands/Command.h"
+#include "aurum.grpc.pb.h"
+#include "config.h"
+
+class PreCommand : public Command {
+private:
+ Command *mCommand;
+ PreCommand();
+
+public:
+ PreCommand(Command *cmd);
+ ::grpc::Status execute() override;
+ ::grpc::Status executePost() override;
+};
+
+#endif
\ No newline at end of file
--- /dev/null
+#ifndef REMOVE_APP_COMMAND_H
+#define REMOVE_APP_COMMAND_H
+
+#include <gio/gio.h>
+#include <grpcpp/grpcpp.h>
+#include "Commands/Command.h"
+#include "ObjectMapper.h"
+#include "aurum.grpc.pb.h"
+#include "config.h"
+
+class RemoveAppCommand : public Command {
+private:
+ const ::aurum::ReqRemoveApp* mRequest;
+ ::aurum::RspRemoveApp* mResponse;
+
+public:
+ RemoveAppCommand(const ::aurum::ReqRemoveApp* request,
+ ::aurum::RspRemoveApp* response);
+ ;
+ ::grpc::Status execute() override;
+};
+
+#endif
\ No newline at end of file
--- /dev/null
+#ifndef SEND_KEY_COMMAND_H
+#define SEND_KEY_COMMAND_H
+
+#include <gio/gio.h>
+#include <grpcpp/grpcpp.h>
+#include "Commands/Command.h"
+#include "ObjectMapper.h"
+#include "aurum.grpc.pb.h"
+#include "config.h"
+
+class SendKeyCommand : public Command {
+private:
+ const ::aurum::ReqKey* mRequest;
+ ::aurum::RspKey* mResponse;
+
+public:
+ SendKeyCommand(const ::aurum::ReqKey* request, ::aurum::RspKey* response);
+ ::grpc::Status execute() override;
+};
+
+#endif
\ No newline at end of file
--- /dev/null
+#ifndef SET_VALUE_COMMAND_H
+#define SET_VALUE_COMMAND_H
+
+#include <gio/gio.h>
+#include <grpcpp/grpcpp.h>
+#include "Commands/Command.h"
+#include "ObjectMapper.h"
+#include "aurum.grpc.pb.h"
+#include "config.h"
+
+class SetValueCommand : public Command {
+private:
+ const ::aurum::ReqSetValue* mRequest;
+ ::aurum::RspSetValue* mResponse;
+
+public:
+ SetValueCommand(const ::aurum::ReqSetValue* request,
+ ::aurum::RspSetValue* response);
+ ::grpc::Status execute() override;
+};
+
+#endif
\ No newline at end of file
--- /dev/null
+#ifndef SYNC_COMMAND_H
+#define SYNC_COMMAND_H
+
+#include <gio/gio.h>
+#include <grpcpp/grpcpp.h>
+#include "Commands/Command.h"
+#include "ObjectMapper.h"
+#include "aurum.grpc.pb.h"
+#include "config.h"
+
+class SyncCommand : public Command {
+private:
+ const ::aurum::ReqEmpty* mRequest;
+ ::aurum::RspEmpty* mResponse;
+
+public:
+ SyncCommand(const ::aurum::ReqEmpty* request, ::aurum::RspEmpty* response);
+ ::grpc::Status execute() override;
+};
+
+#endif
\ No newline at end of file
--- /dev/null
+#ifndef TOUCH_DOWN_COMMAND_H
+#define TOUCH_DOWN_COMMAND_H
+
+#include <gio/gio.h>
+#include <grpcpp/grpcpp.h>
+#include "Commands/Command.h"
+#include "ObjectMapper.h"
+#include "aurum.grpc.pb.h"
+#include "config.h"
+
+class TouchDownCommand : public Command {
+private:
+ const ::aurum::ReqTouchDown* mRequest;
+ ::aurum::RspTouchDown* mResponse;
+
+public:
+ TouchDownCommand(const ::aurum::ReqTouchDown* request,
+ ::aurum::RspTouchDown* response);
+ ::grpc::Status execute() override;
+};
+
+#endif
\ No newline at end of file
--- /dev/null
+#ifndef TOUCH_MOVE_COMMAND_H
+#define TOUCH_MOVE_COMMAND_H
+
+#include <gio/gio.h>
+#include <grpcpp/grpcpp.h>
+#include "Commands/Command.h"
+#include "ObjectMapper.h"
+#include "aurum.grpc.pb.h"
+#include "config.h"
+
+class TouchMoveCommand : public Command {
+private:
+ const ::aurum::ReqTouchMove* mRequest;
+ ::aurum::RspTouchMove* mResponse;
+
+public:
+ TouchMoveCommand(const ::aurum::ReqTouchMove* request,
+ ::aurum::RspTouchMove* response);
+ ::grpc::Status execute() override;
+};
+
+#endif
\ No newline at end of file
--- /dev/null
+#ifndef TOUCH_UP_COMMAND_H
+#define TOUCH_UP_COMMAND_H
+
+#include <gio/gio.h>
+#include <grpcpp/grpcpp.h>
+#include "Commands/Command.h"
+#include "ObjectMapper.h"
+#include "aurum.grpc.pb.h"
+#include "config.h"
+
+class TouchUpCommand : public Command {
+private:
+ const ::aurum::ReqTouchUp* mRequest;
+ ::aurum::RspTouchUp* mResponse;
+
+public:
+ TouchUpCommand(const ::aurum::ReqTouchUp* request,
+ ::aurum::RspTouchUp* response);
+ ::grpc::Status execute() override;
+};
+
+#endif
\ No newline at end of file
--- /dev/null
+#ifndef OBJECT_MAPPER_H
+#define OBJECT_MAPPER_H
+
+#include <map>
+#include <string>
+
+#include "UiObject.h"
+
+class ObjectMapper {
+private:
+ std::map<std::string, std::unique_ptr<UiObject>> mObjectMap;
+ unsigned long long mObjCounter;
+
+private:
+ ObjectMapper();
+
+public:
+ ~ObjectMapper();
+
+public:
+ static ObjectMapper *getInstance();
+ std::string addElement(std::unique_ptr<UiObject> object);
+ UiObject * getElement(const std::string &key);
+};
+
+#endif
\ No newline at end of file
--- /dev/null
+bootstrap_svr_inc = [
+ libaurum_inc,
+ root_inc,
+ include_directories('inc'),
+ include_directories('inc/Commands'),
+ loguru_inc,
+]
+
+bootstrap_svr_src = [
+ files('src/BootstrapServer.cc'),
+ files('src/AurumServiceImpl.cc'),
+ files('src/ObjectMapper.cc'),
+]
+
+bootstrap_svr_src += [
+ files('src/Commands/ClearCommand.cc'),
+ files('src/Commands/ClickCommand.cc'),
+ files('src/Commands/CloseAppCommand.cc'),
+ files('src/Commands/FindElementCommand.cc'),
+ files('src/Commands/FlickCommand.cc'),
+ files('src/Commands/GetAttributeCommand.cc'),
+ files('src/Commands/GetDeviceTimeCommand.cc'),
+ files('src/Commands/GetLocationCommand.cc'),
+ files('src/Commands/GetSizeCommand.cc'),
+ files('src/Commands/GetValueCommand.cc'),
+ files('src/Commands/InstallAppCommand.cc'),
+ files('src/Commands/GetAppInfoCommand.cc'),
+ files('src/Commands/LaunchAppCommand.cc'),
+ files('src/Commands/LongClickCommand.cc'),
+ files('src/Commands/RemoveAppCommand.cc'),
+ files('src/Commands/SendKeyCommand.cc'),
+ files('src/Commands/SetValueCommand.cc'),
+ files('src/Commands/TouchDownCommand.cc'),
+ files('src/Commands/TouchMoveCommand.cc'),
+ files('src/Commands/TouchUpCommand.cc'),
+ files('src/Commands/SyncCommand.cc'),
+ files('src/Commands/KillServerCommand.cc'),
+ files('src/Commands/Command.cc'),
+ files('src/Commands/PreCommand.cc'),
+ files('src/Commands/PostCommand.cc'),
+]
+
+bootstrap_svr_dep = [
+ libaurum,
+ grpc_deps,
+ loguru_deps,
+]
+
+if get_option('tizen') == true
+bootstrap_svr_dep += [
+ dependency('capi-appfw-app-control'),
+ dependency('capi-appfw-app-manager'),
+ dependency('capi-appfw-package-manager'),
+ dependency('capi-appfw-service-application'),
+]
+endif
+
+bootstrap_svr_bin = executable(
+ 'aurum-bootstrap',
+ [bootstrap_svr_src, grpc_src, grpc_pb_src],
+ dependencies: bootstrap_svr_dep,
+ include_directories: bootstrap_svr_inc,
+ link_with: libloguru,
+ install:true,
+ install_dir: join_paths(get_option('tzapp_path'), 'org.tizen.aurum-bootstrap', 'bin'),
+ pie:true,
+)
+
+install_data('org.tizen.aurum-bootstrap.xml', install_dir: get_option('tzpackage_path'))
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns="http://tizen.org/ns/packages" api-version="5.5" package="org.tizen.aurum-bootstrap" version="0.1.0">
+ <label>aurum-bootstrap</label>
+ <author email="wonki_.kim@samsung.com" href="www.samsung.com">Wonki Kim</author>
+ <description>autofilld</description>
+ <service-application appid="org.tizen.aurum-bootstrap" exec="aurum-bootstrap" multiple="false" nodisplay="true" taskmanage="false" type="capp">
+ <label>aurum bootstrap daemon</label>
+ <background-category value="system"/>
+ </service-application>
+ <privileges>
+ <privilege>http://tizen.org/privilege/datasharing</privilege>
+ <privilege>http://tizen.org/privilege/externalstroage</privilege>
+ <privilege>http://tizen.org/privilege/mediastorage</privilege>
+ <privilege>http://tizen.org/privilege/message.read</privilege>
+ <privilege>http://tizen.org/privilege/application.info</privilege>
+ <privilege>http://tizen.org/privilege/application.launch</privilege>
+ </privileges>
+ <feature name="http://tizen.org/feature/network.ethernet">true</feature>
+</manifest>
--- /dev/null
+#include "AurumServiceImpl.h"
+
+#include <AccessibleWatcher.h>
+#include "Commands/Commands.h"
+#include "Commands/PostCommand.h"
+#include "Commands/PreCommand.h"
+
+#include "config.h"
+#include "loguru.hpp"
+
+using namespace grpc;
+using namespace aurum;
+
+aurumServiceImpl::aurumServiceImpl()
+{
+ AccessibleWatcher::getInstance();
+}
+
+::grpc::Status aurumServiceImpl::execute(Command* cmd)
+{
+ std::unique_ptr<PreCommand> proxyPreCmd = std::make_unique<PreCommand>(cmd);
+ std::unique_ptr<PostCommand> proxyPostCmd = std::make_unique<PostCommand>(proxyPreCmd.get());
+ ::grpc::Status rst = proxyPostCmd->execute();
+ return rst;
+}
+
+aurumServiceImpl::~aurumServiceImpl() {}
+::grpc::Status aurumServiceImpl::aurumServiceImpl::sync(
+ ::grpc::ServerContext* context, const ::aurum::ReqEmpty* request,
+ ::aurum::RspEmpty* response)
+{
+ std::unique_ptr<SyncCommand> cmd = std::make_unique<SyncCommand>(request, response);
+ return execute(cmd.get());
+}
+::grpc::Status aurumServiceImpl::aurumServiceImpl::killServer(
+ ::grpc::ServerContext* context, const ::aurum::ReqEmpty* request,
+ ::aurum::RspEmpty* response)
+{
+ std::unique_ptr<KillServerCommand> cmd = std::make_unique<KillServerCommand>(request, response);
+ return execute(cmd.get());
+}
+::grpc::Status aurumServiceImpl::aurumServiceImpl::findElement(
+ ::grpc::ServerContext* context, const ::aurum::ReqFindElement* request,
+ ::aurum::RspFindElement* response)
+{
+ std::unique_ptr<FindElementCommand> cmd = std::make_unique<FindElementCommand>(request, response);
+ return execute(cmd.get());
+}
+
+::grpc::Status aurumServiceImpl::aurumServiceImpl::click(
+ ::grpc::ServerContext* context, const ::aurum::ReqClick* request,
+ ::aurum::RspClick* response)
+{
+ std::unique_ptr<ClickCommand> cmd = ClickCommand::createCommand(request, response);
+ return execute(cmd.get());
+}
+::grpc::Status aurumServiceImpl::getValue(::grpc::ServerContext* context,
+ const ::aurum::ReqGetValue* request,
+ ::aurum::RspGetValue* response)
+{
+ std::unique_ptr<GetValueCommand> cmd = std::make_unique<GetValueCommand>(request, response);
+ return execute(cmd.get());
+}
+::grpc::Status aurumServiceImpl::setValue(::grpc::ServerContext* context,
+ const ::aurum::ReqSetValue* request,
+ ::aurum::RspSetValue* response)
+{
+ std::unique_ptr<SetValueCommand> cmd = std::make_unique<SetValueCommand>(request, response);
+ return execute(cmd.get());
+}
+::grpc::Status aurumServiceImpl::getAttribute(
+ ::grpc::ServerContext* context, const ::aurum::ReqGetAttribute* request,
+ ::aurum::RspGetAttribute* response)
+{
+ std::unique_ptr<GetAttributeCommand> cmd = GetAttributeCommand::createCommand(request, response);
+ return execute(cmd.get());
+}
+::grpc::Status aurumServiceImpl::getSize(::grpc::ServerContext* context,
+ const ::aurum::ReqGetSize* request,
+ ::aurum::RspGetSize* response)
+{
+ std::unique_ptr<GetSizeCommand> cmd = std::make_unique<GetSizeCommand>(request, response);
+ return execute(cmd.get());
+}
+::grpc::Status aurumServiceImpl::clear(::grpc::ServerContext* context,
+ const ::aurum::ReqClear* request,
+ ::aurum::RspClear* response)
+{
+ std::unique_ptr<ClearCommand> cmd = std::make_unique<ClearCommand>(request, response);
+ return execute(cmd.get());
+}
+::grpc::Status aurumServiceImpl::installApp(
+ ::grpc::ServerContext* context,
+ ::grpc::ServerReader< ::aurum::ReqInstallApp>* request,
+ ::aurum::RspInstallApp* response)
+{
+ std::unique_ptr<InstallAppCommand> cmd = std::make_unique<InstallAppCommand>(request, response);
+ return execute(cmd.get());
+}
+::grpc::Status aurumServiceImpl::removeApp(::grpc::ServerContext* context,
+ const ::aurum::ReqRemoveApp* request,
+ ::aurum::RspRemoveApp* response)
+{
+ std::unique_ptr<RemoveAppCommand> cmd = std::make_unique<RemoveAppCommand>(request, response);
+ return execute(cmd.get());
+}
+::grpc::Status aurumServiceImpl::getAppInfo(
+ ::grpc::ServerContext* context, const ::aurum::ReqGetAppInfo* request,
+ ::aurum::RspGetAppInfo* response)
+{
+ std::unique_ptr<GetAppInfoCommand> cmd = std::make_unique<GetAppInfoCommand>(request, response);
+ return execute(cmd.get());
+}
+::grpc::Status aurumServiceImpl::launchApp(::grpc::ServerContext* context,
+ const ::aurum::ReqLaunchApp* request,
+ ::aurum::RspLaunchApp* response)
+{
+ std::unique_ptr<LaunchAppCommand> cmd = std::make_unique<LaunchAppCommand>(request, response);
+ return execute(cmd.get());
+}
+::grpc::Status aurumServiceImpl::closeApp(::grpc::ServerContext* context,
+ const ::aurum::ReqCloseApp* request,
+ ::aurum::RspCloseApp* response)
+{
+ std::unique_ptr<CloseAppCommand> cmd = std::make_unique<CloseAppCommand>(request, response);
+ return execute(cmd.get());
+}
+::grpc::Status aurumServiceImpl::touchDown(::grpc::ServerContext* context,
+ const ::aurum::ReqTouchDown* request,
+ ::aurum::RspTouchDown* response)
+{
+ std::unique_ptr<TouchDownCommand> cmd = std::make_unique<TouchDownCommand>(request, response);
+ return execute(cmd.get());
+}
+::grpc::Status aurumServiceImpl::touchUp(::grpc::ServerContext* context,
+ const ::aurum::ReqTouchUp* request,
+ ::aurum::RspTouchUp* response)
+{
+ std::unique_ptr<TouchUpCommand> cmd = std::make_unique<TouchUpCommand>(request, response);
+ return execute(cmd.get());
+}
+::grpc::Status aurumServiceImpl::touchMove(::grpc::ServerContext* context,
+ const ::aurum::ReqTouchMove* request,
+ ::aurum::RspTouchMove* response)
+{
+ std::unique_ptr<TouchMoveCommand> cmd = std::make_unique<TouchMoveCommand>(request, response);
+ return execute(cmd.get());
+}
+::grpc::Status aurumServiceImpl::longClick(::grpc::ServerContext* context,
+ const ::aurum::ReqClick* request,
+ ::aurum::RspClick* response)
+{
+ std::unique_ptr<LongClickCommand> cmd = std::make_unique<LongClickCommand>(request, response);
+ return execute(cmd.get());
+}
+::grpc::Status aurumServiceImpl::flick(::grpc::ServerContext* context,
+ const ::aurum::ReqFlick* request,
+ ::aurum::RspFlick* response)
+{
+ std::unique_ptr<FlickCommand> cmd = std::make_unique<FlickCommand>(request, response);
+ return execute(cmd.get());
+}
+::grpc::Status aurumServiceImpl::getDeviceTime(
+ ::grpc::ServerContext* context, const ::aurum::ReqGetDeviceTime* request,
+ ::aurum::RspGetDeviceTime* response)
+{
+ std::unique_ptr<GetDeviceTimeCommand> cmd = std::make_unique<GetDeviceTimeCommand>(request, response);
+ return execute(cmd.get());
+}
+::grpc::Status aurumServiceImpl::getLocation(
+ ::grpc::ServerContext* context, const ::aurum::ReqGetLocation* request,
+ ::aurum::RspGetLocation* response)
+{
+ std::unique_ptr<GetLocationCommand> cmd = std::make_unique<GetLocationCommand>(request, response);
+ return execute(cmd.get());
+}
+::grpc::Status aurumServiceImpl::sendKey(::grpc::ServerContext* context,
+ const ::aurum::ReqKey* request,
+ ::aurum::RspKey* response)
+{
+ std::unique_ptr<SendKeyCommand> cmd = std::make_unique<SendKeyCommand>(request, response);
+ return execute(cmd.get());
+}
--- /dev/null
+#include <iostream>
+#include <glib.h>
+
+#include <service_app.h>
+
+#include <gio/gio.h>
+#include <grpcpp/grpcpp.h>
+#include "aurum.grpc.pb.h"
+
+#include "AurumServiceImpl.h"
+#include "config.h"
+#include "loguru.hpp"
+
+using namespace grpc;
+
+typedef struct _ServiceContext {
+ GMainLoop *loop;
+ GThread *thread;
+ std::unique_ptr<Server> server;
+} ServiceContext;
+
+static gpointer
+_grpc_thread_func (gpointer data)
+{
+ ServiceContext *ctx = (ServiceContext*)data;
+ std::string binding("0.0.0.0:50051");
+ aurumServiceImpl service;
+ ServerBuilder builder;
+
+ LOG_F(INFO, "[T] Server Listening on %s", binding.c_str());
+ builder.AddListeningPort(binding, grpc::InsecureServerCredentials());
+ builder.RegisterService(&service);
+ //std::unique_ptr<Server> server(builder.BuildAndStart());
+ ctx->server = std::move(builder.BuildAndStart());
+ ctx->server->Wait();
+
+ return NULL;
+}
+
+bool service_app_create(void *data)
+{
+ ServiceContext *ctx = (ServiceContext*)data;
+ const char *logPath = "/tmp/ua.log";
+
+ loguru::g_preamble = false;
+ loguru::add_file(logPath, loguru::Append, loguru::Verbosity_MAX);
+ LOG_SCOPE_F(INFO, "Log : %s", logPath);
+
+ ctx->loop = g_main_loop_new ( NULL , FALSE );
+ ctx->thread = g_thread_new("grpc_thread", _grpc_thread_func, ctx);
+
+ return true;
+}
+
+void service_app_terminate(void *data)
+{
+ ServiceContext *ctx = (ServiceContext*)data;
+ ctx->server->Shutdown();
+ g_main_loop_unref(ctx->loop);
+ g_thread_join(ctx->thread);
+}
+
+void service_app_control(app_control_h app_control, void *data)
+{
+ ServiceContext *ctx = (ServiceContext*)data;
+}
+
+int main(int argc, char **argv)
+{
+ service_app_lifecycle_callback_s event_callback;
+ app_event_handler_h handlers[5] = {NULL, };
+ ServiceContext ctx = {0,};
+
+ event_callback.create = service_app_create;
+ event_callback.terminate = service_app_terminate;
+ event_callback.app_control = service_app_control;
+
+ return service_app_main(argc, argv, &event_callback, &ctx);
+}
--- /dev/null
+#include "ClearCommand.h"
+#include <UiObject.h>
+#include <loguru.hpp>
+#include <string>
+
+ClearCommand::ClearCommand(const ::aurum::ReqClear* request,
+ ::aurum::RspClear* response)
+ : mRequest{request}, mResponse{response}
+{
+}
+
+bool ClearCommand::hasHintText(UiObject *obj)
+{
+ if (!obj) return false;
+
+ auto old_text = obj->getText();
+ obj->setText("");
+ if (!old_text.compare(obj->getText())) {
+ return true;
+ } else {
+ obj->setText(old_text);
+ return false;
+ }
+}
+
+::grpc::Status ClearCommand::execute()
+{
+ LOG_SCOPE_F(INFO, "Clear --------------- ");
+ ObjectMapper* mObjMap = ObjectMapper::getInstance();
+ UiObject* obj = mObjMap->getElement(mRequest->elementid());
+
+ if (obj) {
+ obj->setText("");
+ obj->refresh();
+ auto text = obj->getText();
+ if (text.length() != 0) {
+ if (hasHintText(obj)) {
+ mResponse->set_status(::aurum::RspStatus::OK);
+ } else {
+ mResponse->set_status(::aurum::RspStatus::ERROR);
+ }
+ } else {
+ mResponse->set_status(::aurum::RspStatus::OK);
+ }
+ }
+
+ return grpc::Status::OK;
+}
\ No newline at end of file
--- /dev/null
+#include "ClickCommand.h"
+
+#include "UiObject.h"
+#include "UiDevice.h"
+
+#include <loguru.hpp>
+
+ClickCommand::ClickCommand(const ::aurum::ReqClick* request,
+ ::aurum::RspClick* response)
+ : mRequest{request}, mResponse{response}
+{
+}
+
+::grpc::Status ClickCommand::execute()
+{
+ return grpc::Status::CANCELLED;
+}
+
+std::unique_ptr<ClickCommand> ClickCommand::createCommand(const ::aurum::ReqClick* request, ::aurum::RspClick* response)
+{
+ ::aurum::ReqClick_RequestType type = request->type();
+
+ if (type == ::aurum::ReqClick_RequestType::ReqClick_RequestType_ELEMENTID)
+ return std::make_unique<ClickElementCommand>(request, response);
+ else if (type == ::aurum::ReqClick_RequestType::ReqClick_RequestType_COORD)
+ return std::make_unique<ClickCoordCommand>(request, response);
+ else if (type == ::aurum::ReqClick_RequestType::ReqClick_RequestType_ATSPI)
+ return std::make_unique<ClickAtspiCommand>(request, response);
+ else
+ return std::make_unique<ClickCommand>(request, response);
+}
+
+::grpc::Status ClickElementCommand::execute()
+{
+ ObjectMapper* mObjMap = ObjectMapper::getInstance();
+ UiObject* obj = mObjMap->getElement(mRequest->elementid());
+
+ if (obj) {
+ obj->click();
+ mResponse->set_status(::aurum::RspStatus::OK);
+ } else
+ mResponse->set_status(::aurum::RspStatus::ERROR);
+
+ return grpc::Status::OK;
+}
+
+::grpc::Status ClickCoordCommand::execute()
+{
+ UiDevice* obj = UiDevice::getInstance(DeviceType::DEFAULT);
+ const ::aurum::Point& point = mRequest->coordination();
+ obj->click(point.x(), point.y());
+ mResponse->set_status(::aurum::RspStatus::OK);
+}
+
+::grpc::Status ClickAtspiCommand::execute()
+{
+ return grpc::Status::CANCELLED;
+}
--- /dev/null
+#include "CloseAppCommand.h"
+#include <loguru.hpp>
+#include <chrono>
+#include <thread>
+#ifdef GBSBUILD
+#include <app_manager_extension.h>
+#endif
+
+CloseAppCommand::CloseAppCommand(const ::aurum::ReqCloseApp* request,
+ ::aurum::RspCloseApp* response)
+ : mRequest{request}, mResponse{response}
+{
+}
+
+::grpc::Status CloseAppCommand::execute()
+{
+ LOG_SCOPE_F(INFO, "CloseApp --------------- ");
+#ifdef GBSBUILD
+ std::string packageName = mRequest->packagename();
+ app_context_h app_context = NULL;
+
+ LOG_F(INFO, "close req : %s", packageName.c_str());
+
+ int ret = app_manager_get_app_context(packageName.c_str(), &app_context);
+ if (ret) {
+ LOG_SCOPE_F(INFO, "Terminate Failed(1/2) Err Code : %d", ret);
+ mResponse->set_status(::aurum::RspStatus::ERROR);
+ return grpc::Status::OK;
+ }
+ ret = app_manager_terminate_app(app_context);
+ if (ret) {
+ LOG_SCOPE_F(INFO, "Terminate Failed(2/2) Err Code : %d", ret);
+ mResponse->set_status(::aurum::RspStatus::ERROR);
+ return grpc::Status::OK;
+ }
+#endif
+ return grpc::Status::OK;
+}
+
+::grpc::Status CloseAppCommand::executePost()
+{
+ LOG_SCOPE_F(INFO, "CloseAppCommand::executePost");
+ std::this_thread::sleep_for(std::chrono::milliseconds{1500});
+ return grpc::Status::OK;
+}
\ No newline at end of file
--- /dev/null
+#include "Command.h"
+#include <loguru.hpp>
+
+::grpc::Status Command::executePost()
+{
+ return ::grpc::Status::OK;
+}
+
+::grpc::Status Command::executePre()
+{
+ return ::grpc::Status::OK;
+}
--- /dev/null
+#include "FindElementCommand.h"
+
+#include "ISearchable.h"
+
+#include "Sel.h"
+#include "UiDevice.h"
+#include "UiObject.h"
+#include "UiSelector.h"
+
+#include <loguru.hpp>
+
+FindElementCommand::FindElementCommand(const ::aurum::ReqFindElement* request,
+ ::aurum::RspFindElement* response)
+ : mRequest{request}, mResponse{response}
+{
+ mObjMap = ObjectMapper::getInstance();
+}
+ISearchable* FindElementCommand::getSearchableTop(void)
+{
+ ISearchable* searchableObj = nullptr;
+ bool fromObject = mRequest->elementid().empty() == false;
+
+ if (fromObject) searchableObj = mObjMap->getElement(mRequest->elementid());
+ if (!searchableObj) searchableObj = UiDevice::getInstance(DeviceType::DEFAULT);
+
+ return searchableObj;
+}
+std::shared_ptr<UiSelector> FindElementCommand::getSelector(void)
+{
+ return Sel::text(mRequest->textfield());
+}
+
+::grpc::Status FindElementCommand::execute()
+{
+ LOG_SCOPE_F(INFO, "findElement --------------- ");
+ auto searchableObj = getSearchableTop();
+ auto sel = getSelector();
+
+ std::vector<std::unique_ptr<UiObject>> founds = searchableObj->findObjects(sel);
+
+ if (founds.size() > 0) {
+ for (auto& found : founds) {
+ UiObject* obj = found.get();
+ std::string key = mObjMap->addElement(std::move(found));
+ LOG_F(INFO, "found object : %s key:%s",
+ obj->getResourceName().c_str(), key.c_str());
+ ::aurum::Element* elm = mResponse->add_elements();
+ elm->set_elementid(key);
+ }
+ mResponse->set_status(::aurum::RspStatus::OK);
+ }
+
+ return grpc::Status::OK;
+}
\ No newline at end of file
--- /dev/null
+#include "FlickCommand.h"
+#include <loguru.hpp>
+
+#include <UiDevice.h>
+
+FlickCommand::FlickCommand(const ::aurum::ReqFlick *request,
+ ::aurum::RspFlick * response)
+ : mRequest{request}, mResponse{response}
+{
+}
+
+::grpc::Status FlickCommand::execute()
+{
+ LOG_SCOPE_F(INFO, "Flick --------------- ");
+
+ const ::aurum::Point &startPoint = mRequest->startpoint();
+ const ::aurum::Point &endPoint = mRequest->endpoint();
+ int durationMs = mRequest->durationms();
+
+ UiDevice *device = UiDevice::getInstance(DeviceType::DEFAULT);
+ device->drag(startPoint.x(), startPoint.y(), endPoint.x(), endPoint.y(), durationMs);
+ mResponse->set_status(::aurum::RspStatus::OK);
+
+ return grpc::Status::OK;
+}
\ No newline at end of file
--- /dev/null
+#include "GetAppInfoCommand.h"
+#include <loguru.hpp>
+#ifdef GBSBUILD
+#include <app_manager_extension.h>
+#include <package_manager.h>
+#endif
+
+GetAppInfoCommand::GetAppInfoCommand(const ::aurum::ReqGetAppInfo* request,
+ ::aurum::RspGetAppInfo* response)
+ : mRequest{request}, mResponse{response}
+{
+}
+
+::grpc::Status GetAppInfoCommand::execute()
+{
+ LOG_SCOPE_F(INFO, "GetAppInfo --------------- ");
+#ifdef GBSBUILD
+ std::string packageName = mRequest->packagename();
+
+ app_context_h app_context;
+ package_info_h package_info;
+ app_state_e appState;
+
+ char* label = nullptr;
+ int ret = -1;
+
+ mResponse->set_status(::aurum::RspStatus::OK);
+ mResponse->set_isinstalled(false);
+ mResponse->set_isrunning(false);
+ mResponse->set_isfocused(false);
+
+ if (!package_manager_get_package_info(packageName.c_str(), &package_info)) {
+ if (!package_info_get_label(package_info, &label)) {
+ if (label) {
+ free(label);
+ mResponse->set_isinstalled(true);
+ }
+ }
+ }
+
+ if (!app_manager_get_app_context(packageName.c_str(), &app_context)) {
+ if (!app_context_get_app_state(app_context, &appState)) {
+ mResponse->set_isfocused(appState & APP_STATE_FOREGROUND);
+ mResponse->set_isrunning(!(appState & APP_STATE_TERMINATED));
+ }
+ }
+
+#endif
+ return grpc::Status::OK;
+}
--- /dev/null
+#include "GetAttributeCommand.h"
+#include <loguru.hpp>
+
+#include <UiDevice.h>
+#include <UiObject.h>
+
+GetAttributeCommand::GetAttributeCommand(
+ const ::aurum::ReqGetAttribute* request, ::aurum::RspGetAttribute* response)
+ : mRequest{request}, mResponse{response}, mObjMap{ObjectMapper::getInstance()}
+{
+}
+
+::grpc::Status GetAttributeCommand::execute()
+{
+ return grpc::Status::CANCELLED;
+}
+
+std::unique_ptr<GetAttributeCommand> GetAttributeCommand::createCommand(const ::aurum::ReqGetAttribute* request,
+ ::aurum::RspGetAttribute* response)
+{
+ ::aurum::ReqGetAttribute_RequestType type = request->attribute();
+
+ LOG_SCOPE_F(INFO, "type : %d", type);
+
+ if (type == ::aurum::ReqGetAttribute_RequestType::ReqGetAttribute_RequestType_VISIBLE)
+ return std::make_unique<GetVisibleAttributeCommand>(request, response);
+ else if (type == ::aurum::ReqGetAttribute_RequestType::ReqGetAttribute_RequestType_FOCUSABLE)
+ return std::make_unique<GetFocusableAttributeCommand>(request, response);
+ else if (type == ::aurum::ReqGetAttribute_RequestType::ReqGetAttribute_RequestType_FOCUSED)
+ return std::make_unique<GetFocusedAttributeCommand>(request, response);
+ else if (type == ::aurum::ReqGetAttribute_RequestType::ReqGetAttribute_RequestType_ENABLED)
+ return std::make_unique<GetEnabledAttributeCommand>(request, response);
+ else if (type == ::aurum::ReqGetAttribute_RequestType::ReqGetAttribute_RequestType_CLICKABLE)
+ return std::make_unique<GetClickableAttributeCommand>(request, response);
+ else if (type == ::aurum::ReqGetAttribute_RequestType::ReqGetAttribute_RequestType_SCROLLABLE)
+ return std::make_unique<GetScrollableAttributeCommand>(request, response);
+ else if (type == ::aurum::ReqGetAttribute_RequestType::ReqGetAttribute_RequestType_CHECKABLE)
+ return std::make_unique<GetCheckableAttributeCommand>(request, response);
+ else if (type == ::aurum::ReqGetAttribute_RequestType::ReqGetAttribute_RequestType_CHECKED)
+ return std::make_unique<GetCheckedAttributeCommand>(request, response);
+ else if (type == ::aurum::ReqGetAttribute_RequestType::ReqGetAttribute_RequestType_SELECTED)
+ return std::make_unique<GetSelectedAttributeCommand>(request, response);
+ else if (type == ::aurum::ReqGetAttribute_RequestType::ReqGetAttribute_RequestType_SELECTABLE)
+ return std::make_unique<GetSelectableAttributeCommand>(request, response);
+ else
+ return std::make_unique<GetAttributeCommand>(request, response);
+}
+
+::grpc::Status GetVisibleAttributeCommand::execute()
+{
+ UiObject* obj = mObjMap->getElement(mRequest->elementid());
+ if (!obj) {
+ mResponse->set_boolvalue(false);
+ mResponse->set_status(aurum::RspStatus::ERROR);
+ return grpc::Status::OK;
+ }
+ mResponse->set_boolvalue(obj->isVisible());
+ mResponse->set_status(aurum::RspStatus::OK);
+ return grpc::Status::OK;
+}
+
+::grpc::Status GetFocusedAttributeCommand::execute()
+{
+ UiObject* obj = mObjMap->getElement(mRequest->elementid());
+ if (!obj) {
+ mResponse->set_boolvalue(false);
+ mResponse->set_status(aurum::RspStatus::ERROR);
+ return grpc::Status::OK;
+ }
+ mResponse->set_boolvalue(obj->isFocused());
+ mResponse->set_status(aurum::RspStatus::OK);
+ return grpc::Status::OK;
+}
+
+::grpc::Status GetFocusableAttributeCommand::execute()
+{
+ UiObject* obj = mObjMap->getElement(mRequest->elementid());
+ if (!obj) {
+ mResponse->set_boolvalue(false);
+ mResponse->set_status(aurum::RspStatus::ERROR);
+ return grpc::Status::OK;
+ }
+ mResponse->set_boolvalue(obj->isFocusable());
+ mResponse->set_status(aurum::RspStatus::OK);
+ return grpc::Status::OK;
+}
+
+::grpc::Status GetCheckableAttributeCommand::execute()
+{
+ UiObject* obj = mObjMap->getElement(mRequest->elementid());
+ if (!obj) {
+ mResponse->set_boolvalue(false);
+ mResponse->set_status(aurum::RspStatus::ERROR);
+ return grpc::Status::OK;
+ }
+ mResponse->set_boolvalue(obj->isCheckable());
+ mResponse->set_status(aurum::RspStatus::OK);
+ return grpc::Status::OK;
+}
+
+::grpc::Status GetCheckedAttributeCommand::execute()
+{
+ UiObject* obj = mObjMap->getElement(mRequest->elementid());
+ if (!obj) {
+ mResponse->set_boolvalue(false);
+ mResponse->set_status(aurum::RspStatus::ERROR);
+ return grpc::Status::OK;
+ }
+ mResponse->set_boolvalue(obj->isChecked());
+ mResponse->set_status(aurum::RspStatus::OK);
+ return grpc::Status::OK;
+}
+
+::grpc::Status GetEnabledAttributeCommand::execute()
+{
+ UiObject* obj = mObjMap->getElement(mRequest->elementid());
+ if (!obj) {
+ mResponse->set_boolvalue(false);
+ mResponse->set_status(aurum::RspStatus::ERROR);
+ return grpc::Status::OK;
+ }
+ mResponse->set_boolvalue(obj->isEnabled());
+ mResponse->set_status(aurum::RspStatus::OK);
+ return grpc::Status::OK;
+}
+
+::grpc::Status GetClickableAttributeCommand::execute()
+{
+ UiObject* obj = mObjMap->getElement(mRequest->elementid());
+ if (!obj) {
+ mResponse->set_boolvalue(false);
+ mResponse->set_status(aurum::RspStatus::ERROR);
+ return grpc::Status::OK;
+ }
+ mResponse->set_boolvalue(obj->isClickable());
+ mResponse->set_status(aurum::RspStatus::OK);
+ return grpc::Status::OK;
+}
+
+::grpc::Status GetScrollableAttributeCommand::execute()
+{
+ UiObject* obj = mObjMap->getElement(mRequest->elementid());
+ if (!obj) {
+ mResponse->set_boolvalue(false);
+ mResponse->set_status(aurum::RspStatus::ERROR);
+ return grpc::Status::OK;
+ }
+ mResponse->set_boolvalue(obj->isScrollable());
+ mResponse->set_status(aurum::RspStatus::OK);
+ return grpc::Status::OK;
+}
+
+::grpc::Status GetSelectableAttributeCommand::execute()
+{
+ UiObject* obj = mObjMap->getElement(mRequest->elementid());
+ if (!obj) {
+ mResponse->set_boolvalue(false);
+ mResponse->set_status(aurum::RspStatus::ERROR);
+ return grpc::Status::OK;
+ }
+ mResponse->set_boolvalue(obj->isSelectable());
+ mResponse->set_status(aurum::RspStatus::OK);
+ return grpc::Status::OK;
+}
+
+::grpc::Status GetSelectedAttributeCommand::execute()
+{
+ UiObject* obj = mObjMap->getElement(mRequest->elementid());
+ if (!obj) {
+ mResponse->set_boolvalue(false);
+ mResponse->set_status(aurum::RspStatus::ERROR);
+ return grpc::Status::OK;
+ }
+ mResponse->set_boolvalue(obj->isSelected());
+ mResponse->set_status(aurum::RspStatus::OK);
+ return grpc::Status::OK;
+}
--- /dev/null
+#include "GetDeviceTimeCommand.h"
+#include <loguru.hpp>
+
+GetDeviceTimeCommand::GetDeviceTimeCommand(
+ const ::aurum::ReqGetDeviceTime* request,
+ ::aurum::RspGetDeviceTime* response)
+ : mRequest{request}, mResponse{response}
+{
+}
+
+::grpc::Status GetDeviceTimeCommand::execute()
+{
+ LOG_SCOPE_F(INFO, "GetDeviceTime --------------- ");
+ // ObjectMapper *mObjMap = ObjectMapper::getInstance();
+ return grpc::Status::OK;
+}
\ No newline at end of file
--- /dev/null
+#include "GetLocationCommand.h"
+#include <loguru.hpp>
+
+GetLocationCommand::GetLocationCommand(const ::aurum::ReqGetLocation* request,
+ ::aurum::RspGetLocation* response)
+ : mRequest{request}, mResponse{response}
+{
+}
+
+::grpc::Status GetLocationCommand::execute()
+{
+ LOG_SCOPE_F(INFO, "CliGetLocation --------------- ");
+ // ObjectMapper *mObjMap = ObjectMapper::getInstance();
+ return grpc::Status::OK;
+}
\ No newline at end of file
--- /dev/null
+#include "GetSizeCommand.h"
+#include <loguru.hpp>
+
+#include <UiObject.h>
+
+GetSizeCommand::GetSizeCommand(const ::aurum::ReqGetSize* request,
+ ::aurum::RspGetSize* response)
+ : mRequest{request}, mResponse{response}
+{
+}
+
+::grpc::Status GetSizeCommand::execute()
+{
+ LOG_SCOPE_F(INFO, "GetSize --------------- ");
+ ObjectMapper *mObjMap = ObjectMapper::getInstance();
+ UiObject* obj = mObjMap->getElement(mRequest->elementid());
+ if (obj) {
+ const Rect<int> &size = obj->getBoundingBox();
+ ::aurum::Rect rect;
+ rect.set_x(size.mTopLeft.x);
+ rect.set_y(size.mTopLeft.y);
+ rect.set_width(size.width());
+ rect.set_height(size.height());
+ mResponse->mutable_size()->CopyFrom(rect);
+ }
+
+ return grpc::Status::OK;
+}
\ No newline at end of file
--- /dev/null
+#include "GetValueCommand.h"
+#include <loguru.hpp>
+
+#include <UiObject.h>
+
+GetValueCommand::GetValueCommand(const ::aurum::ReqGetValue* request,
+ ::aurum::RspGetValue* response)
+ : mRequest{request}, mResponse{response}
+{
+}
+
+::grpc::Status GetValueCommand::execute()
+{
+ LOG_SCOPE_F(INFO, "GetValue --------------- ");
+ ObjectMapper* mObjMap = ObjectMapper::getInstance();
+ UiObject* obj = mObjMap->getElement(mRequest->elementid());
+
+ if (obj) {
+ std::string text = obj->getText();
+ mResponse->set_stringvalue(text.c_str());
+ mResponse->set_status(::aurum::RspStatus::OK);
+ }
+
+ return grpc::Status::OK;
+}
\ No newline at end of file
--- /dev/null
+#include "InstallAppCommand.h"
+#include <fstream>
+#include <loguru.hpp>
+#ifdef GBSBUILD
+#include <package_manager.h>
+#endif
+
+InstallAppCommand::InstallAppCommand(
+ ::grpc::ServerReader<::aurum::ReqInstallApp> *request,
+ ::aurum::RspInstallApp * response)
+ : mRequest{request}, mResponse{response}
+{
+}
+
+::grpc::Status InstallAppCommand::execute()
+{
+ LOG_SCOPE_F(INFO, "InstallApp --------------- ");
+#ifdef GBSBUILD
+ ::aurum::ReqInstallApp chunk;
+
+ std::ofstream outfile("/tmp/app.tpk", std::ofstream::binary);
+
+ while (mRequest->Read(&chunk)) {
+ std::size_t size = chunk.package().length();
+ const char *bufptr = chunk.package().c_str();
+ outfile.write(bufptr, size);
+ }
+ outfile.close();
+
+ package_manager_request_h pkgRequest;
+ int id;
+
+ package_manager_request_create(&pkgRequest);
+ package_manager_request_install(pkgRequest, "/tmp/app.tpk", &id);
+#endif
+ return grpc::Status::OK;
+}
\ No newline at end of file
--- /dev/null
+#include "KillServerCommand.h"
+#include <loguru.hpp>
+
+KillServerCommand::KillServerCommand(const ::aurum::ReqEmpty* request,
+ ::aurum::RspEmpty* response)
+ : mRequest{request}, mResponse{response}
+{
+}
+
+::grpc::Status KillServerCommand::execute()
+{
+ LOG_SCOPE_F(INFO, "Kill Server ");
+
+ exit(1);
+
+ return grpc::Status::OK;
+}
\ No newline at end of file
--- /dev/null
+#include "LaunchAppCommand.h"
+#include <loguru.hpp>
+#include <chrono>
+#include <thread>
+
+#ifdef GBSBUILD
+#include <app_control.h>
+#endif
+
+LaunchAppCommand::LaunchAppCommand(const ::aurum::ReqLaunchApp* request,
+ ::aurum::RspLaunchApp* response)
+ : mRequest{request}, mResponse{response}
+{
+}
+
+::grpc::Status LaunchAppCommand::execute()
+{
+ LOG_SCOPE_F(INFO, "LaunchApp --------------- ");
+#ifdef GBSBUILD
+ app_control_h appControl;
+ std::string packageName = mRequest->packagename();
+ int ret = -1;
+
+ if (packageName.empty()) return grpc::Status::OK;
+
+ ret = app_control_create(&appControl);
+ if (ret) {
+ LOG_SCOPE_F(INFO, "Launch Failed(1/3) Err Code : %ull", ret);
+ mResponse->set_status(::aurum::RspStatus::ERROR);
+ return grpc::Status::OK;
+ }
+
+ ret = app_control_set_app_id(appControl, packageName.c_str());
+ if (ret) {
+ LOG_SCOPE_F(INFO, "Launch Failed(2/3) Err Code : %ull", ret);
+ mResponse->set_status(::aurum::RspStatus::ERROR);
+ return grpc::Status::OK;
+ }
+
+ ret = app_control_send_launch_request(appControl, NULL, NULL);
+ if (ret) {
+ LOG_SCOPE_F(INFO, "Launch Failed(3/3) Err Code : %ull", ret);
+ mResponse->set_status(::aurum::RspStatus::ERROR);
+ return grpc::Status::OK;
+ }
+#endif
+ return grpc::Status::OK;
+}
+::grpc::Status LaunchAppCommand::executePost()
+{
+ LOG_SCOPE_F(INFO, "LaunchAppCommand::executePost");
+ std::this_thread::sleep_for(std::chrono::milliseconds{1500});
+ return grpc::Status::OK;
+}
\ No newline at end of file
--- /dev/null
+#include "LongClickCommand.h"
+#include <loguru.hpp>
+
+#include <UiObject.h>
+#include <UiDevice.h>
+
+LongClickCommand::LongClickCommand(const ::aurum::ReqClick* request,
+ ::aurum::RspClick* response)
+ : mRequest{request}, mResponse{response}
+{
+}
+
+::grpc::Status LongClickCommand::execute()
+{
+ LOG_SCOPE_F(INFO, "LongClick --------------- ");
+
+ ObjectMapper* mObjMap = ObjectMapper::getInstance();
+ ::aurum::ReqClick_RequestType type = mRequest->type();
+
+ if (type == ::aurum::ReqClick_RequestType_ELEMENTID) {
+ UiObject* obj = mObjMap->getElement(mRequest->elementid());
+ if (obj) {
+ obj->longClick(LOGNCLICK_INTERVAL);
+ mResponse->set_status(::aurum::RspStatus::OK);
+ } else
+ mResponse->set_status(::aurum::RspStatus::ERROR);
+ } else if (type == ::aurum::ReqClick_RequestType_COORD) {
+ UiDevice* obj = UiDevice::getInstance(DeviceType::DEFAULT);
+ const ::aurum::Point& point = mRequest->coordination();
+ obj->click(point.x(), point.y(), LOGNCLICK_INTERVAL);
+ mResponse->set_status(::aurum::RspStatus::OK);
+ } else if (type == ::aurum::ReqClick_RequestType_ATSPI) {
+ mResponse->set_status(::aurum::RspStatus::ERROR);
+ }
+
+ return grpc::Status::OK;
+}
\ No newline at end of file
--- /dev/null
+#include "PostCommand.h"
+#include <atspi/atspi.h>
+#include <loguru.hpp>
+
+PostCommand::PostCommand() : PostCommand(nullptr) {}
+PostCommand::PostCommand(Command *cmd) : mCommand{cmd} {}
+
+::grpc::Status PostCommand::execute()
+{
+ ::grpc::Status rst = mCommand->execute();
+ LOG_SCOPE_F(INFO, "PostCommand --------------- ");
+ mCommand->executePost();
+ // do post-command
+ return rst;
+}
+
+::grpc::Status PostCommand::executePre()
+{
+ return mCommand->executePre();
+}
\ No newline at end of file
--- /dev/null
+#include "PreCommand.h"
+#include <atspi/atspi.h>
+#include <loguru.hpp>
+
+PreCommand::PreCommand() : PreCommand(nullptr) {}
+PreCommand::PreCommand(Command *cmd) : mCommand{cmd} {}
+
+::grpc::Status PreCommand::execute()
+{
+ {
+ LOG_SCOPE_F(INFO, "PreCommand --------------- ");
+ AtspiAccessible *n = atspi_get_desktop(0);
+ if (n) {
+ char *name = atspi_accessible_get_name(n, NULL);
+ if(name) free(name);
+ g_object_unref(n);
+ }
+ }
+ mCommand->executePre();
+ return mCommand->execute();
+}
+
+::grpc::Status PreCommand::executePost()
+{
+ return mCommand->executePost();
+}
\ No newline at end of file
--- /dev/null
+#include "RemoveAppCommand.h"
+#include <loguru.hpp>
+#ifdef GBSBUILD
+#include <package_manager.h>
+#endif
+
+RemoveAppCommand::RemoveAppCommand(const ::aurum::ReqRemoveApp* request,
+ ::aurum::RspRemoveApp* response)
+ : mRequest{request}, mResponse{response}
+{
+}
+
+::grpc::Status RemoveAppCommand::execute()
+{
+ LOG_SCOPE_F(INFO, "RemoveApp --------------- ");
+#ifdef GBSBUILD
+ package_manager_request_h pkgRequest;
+ std::string name = mRequest->packagename();
+ int id;
+ LOG_F(INFO, "package name :%s", name.c_str());
+
+ package_manager_request_create(&pkgRequest);
+ package_manager_request_uninstall(pkgRequest, name.c_str(), &id);
+#endif
+
+ return grpc::Status::OK;
+}
\ No newline at end of file
--- /dev/null
+#include "SendKeyCommand.h"
+#include <loguru.hpp>
+
+#include <UiDevice.h>
+
+SendKeyCommand::SendKeyCommand(const ::aurum::ReqKey* request,
+ ::aurum::RspKey* response)
+ : mRequest{request}, mResponse{response}
+{
+}
+
+::grpc::Status SendKeyCommand::execute()
+{
+ LOG_SCOPE_F(INFO, "SendKey --------------- ");
+ UiDevice* mDevice = UiDevice::getInstance(DeviceType::DEFAULT);
+ ::aurum::ReqKey_KeyType type = mRequest->type();
+
+ if (type == ::aurum::ReqKey_KeyType::ReqKey_KeyType_BACK)
+ mDevice->pressBack();
+ else if (type == ::aurum::ReqKey_KeyType::ReqKey_KeyType_HOME)
+ mDevice->pressHome();
+ else if (type == ::aurum::ReqKey_KeyType::ReqKey_KeyType_MENU)
+ mDevice->pressMenu();
+ else if (type == ::aurum::ReqKey_KeyType::ReqKey_KeyType_VOLUP)
+ mDevice->pressVolUp();
+ else if (type == ::aurum::ReqKey_KeyType::ReqKey_KeyType_VOLDOWN)
+ mDevice->pressVolDown();
+ else if (type == ::aurum::ReqKey_KeyType::ReqKey_KeyType_POWER)
+ mDevice->pressPower();
+ else if (type == ::aurum::ReqKey_KeyType::ReqKey_KeyType_KEY) {
+ ; // TODO
+ }
+ else if (type == ::aurum::ReqKey_KeyType::ReqKey_KeyType_XF86) {
+ ; // TODO
+ }
+ return grpc::Status::OK;
+}
\ No newline at end of file
--- /dev/null
+#include "SetValueCommand.h"
+#include <loguru.hpp>
+
+SetValueCommand::SetValueCommand(const ::aurum::ReqSetValue* request,
+ ::aurum::RspSetValue* response)
+ : mRequest{request}, mResponse{response}
+{
+}
+
+::grpc::Status SetValueCommand::execute()
+{
+ LOG_SCOPE_F(INFO, "SetValue (text:%s) --------------- ", mRequest->stringvalue().c_str());
+ ObjectMapper* mObjMap = ObjectMapper::getInstance();
+ UiObject* obj = mObjMap->getElement(mRequest->elementid());
+ if (obj) obj->setText(const_cast<std::string&>(mRequest->stringvalue()));
+ return grpc::Status::OK;
+}
\ No newline at end of file
--- /dev/null
+#include "SyncCommand.h"
+#include <loguru.hpp>
+
+#include <AccessibleWatcher.h>
+#include <AccessibleNode.h>
+
+SyncCommand::SyncCommand(const ::aurum::ReqEmpty *request,
+ ::aurum::RspEmpty * response)
+ : mRequest{request}, mResponse{response}
+{
+}
+
+::grpc::Status SyncCommand::execute()
+{
+ LOG_SCOPE_F(INFO, "Sync Command ");
+ const AccessibleWatcher *accObj = AccessibleWatcher::getInstance();
+
+ auto root = accObj->getRootNode();
+ LOG_F(INFO, "root node tree / depth : 2");
+ root->print(0, 2);
+
+ return grpc::Status::OK;
+}
\ No newline at end of file
--- /dev/null
+#include "TouchDownCommand.h"
+#include <UiDevice.h>
+#include <loguru.hpp>
+
+TouchDownCommand::TouchDownCommand(const ::aurum::ReqTouchDown* request,
+ ::aurum::RspTouchDown* response)
+ : mRequest{request}, mResponse{response}
+{
+}
+
+::grpc::Status TouchDownCommand::execute()
+{
+ LOG_SCOPE_F(INFO, "TouchDown --------------- ");
+ const aurum::Point& point_ = mRequest->coordination();
+ mResponse->set_seqid(0);
+ UiDevice::getInstance(DeviceType::DEFAULT)
+ ->touchDown(point_.x(), point_.y());
+ return grpc::Status::OK;
+}
\ No newline at end of file
--- /dev/null
+#include "TouchMoveCommand.h"
+#include <UiDevice.h>
+#include <loguru.hpp>
+
+TouchMoveCommand::TouchMoveCommand(const ::aurum::ReqTouchMove* request,
+ ::aurum::RspTouchMove* response)
+ : mRequest{request}, mResponse{response}
+{
+}
+
+::grpc::Status TouchMoveCommand::execute()
+{
+ LOG_SCOPE_F(INFO, "TouchMove --------------- ");
+ const aurum::Point& point = mRequest->coordination();
+ UiDevice::getInstance(DeviceType::DEFAULT)->touchMove(point.x(), point.y());
+ return grpc::Status::OK;
+}
\ No newline at end of file
--- /dev/null
+#include "TouchUpCommand.h"
+#include <UiDevice.h>
+#include <loguru.hpp>
+
+TouchUpCommand::TouchUpCommand(const ::aurum::ReqTouchUp* request,
+ ::aurum::RspTouchUp* response)
+ : mRequest{request}, mResponse{response}
+{
+}
+
+::grpc::Status TouchUpCommand::execute()
+{
+ LOG_SCOPE_F(INFO, "TouchUp --------------- ");
+ const aurum::Point& point = mRequest->coordination();
+ UiDevice::getInstance(DeviceType::DEFAULT)->touchUp(point.x(), point.y());
+ return grpc::Status::OK;
+}
\ No newline at end of file
--- /dev/null
+#include "ObjectMapper.h"
+
+ObjectMapper::ObjectMapper() : mObjectMap{}, mObjCounter{0} {}
+
+ObjectMapper::~ObjectMapper() {}
+
+ObjectMapper *ObjectMapper::getInstance()
+{
+ static ObjectMapper *mInstance = new ObjectMapper();
+ return mInstance;
+}
+
+std::string ObjectMapper::addElement(std::unique_ptr<UiObject> object)
+{
+ ++mObjCounter;
+ std::string key = std::to_string(mObjCounter);
+ mObjectMap[key] = std::move(object);
+ return key;
+}
+
+UiObject *ObjectMapper::getElement(const std::string &key)
+{
+ unsigned long long keyCnt = (unsigned long long)std::stoll(key); // this key is a result of calling std:to_string(mObjCounter)
+ if (keyCnt <= 0 || keyCnt > mObjCounter) return nullptr;
+ if (mObjectMap.count(key)) {
+ UiObject *obj = mObjectMap[key].get();
+ const_cast<const UiObject *>(obj)->refresh();
+ return obj;
+ }
+ return nullptr;
+}
BuildRequires: pkgconfig(capi-appfw-package-manager)
BuildRequires: pkgconfig(capi-appfw-app-control)
BuildRequires: pkgconfig(capi-appfw-app-manager)
+BuildRequires: pkgconfig(capi-appfw-service-application)
+BuildRequires: pkgconfig(libtzplatform-config)
+
+%if "%{?profile}" == "tv"
+ %define __hash_signing 0
+%else
+ %define __hash_signing 1
+%endif
+
+%if 0%{?__hash_signing}
+BuildRequires: hash-signer
+%if 0%{?sec_product_feature_profile_wearable}
+Requires(post): signing-client
+%endif
+%endif
%description
aurum is a project for testing ui.
--libdir %{_libdir} \
-Dcpp_std=c++17 \
-Dtizen=true \
+ -Dtzapp_path=%{TZ_SYS_RO_APP} \
+ -Dtzpackage_path=%{TZ_SYS_RO_PACKAGES} \
gbsbuild 2>&1 | sed \
-e 's%^.*: error: .*$%\x1b[37;41m&\x1b[m%' \
-e 's%^.*: warning: .*$%\x1b[30;43m&\x1b[m%'
export DESTDIR=%{buildroot}
ninja -C gbsbuild install
+%if 0%{?__hash_signing}
+%define tizen_sign 1
+%define tizen_sign_base /usr/apps/org.tizen.aurum-bootstrap
+%define tizen_sign_level platform
+%define tizen_author_sign 1
+%define tizen_dist_sign 1
+%endif
+
%post
sbin/ldconfig
sbin/ldconfig
%post bootstrap
-chsmack -e "User" %{_bindir}/aurum_bootstrap
-
+%if 0%{?sec_product_feature_profile_wearable}
+echo "signing %{TZ_SYS_RO_APP}/org.tizen.aurum-bootstrap"
+/usr/bin/signing-client/hash-signer-client.sh -a -d -p platform %{TZ_SYS_RO_APP}/org.tizen.aurum-bootstrap
+%endif
+#chsmack -e "User" %{_bindir}/aurum_bootstrap
%postun bootstrap
/sbin/ldconfig
+
%files
%manifest %{name}.manifest
%defattr(-,root,root)
%manifest %{name}.manifest
%defattr(-,root,root)
%license COPYING
-%{_bindir}/aurum_bootstrap
-%{_unitdir_user}/aurum-bootstrap.service
+#%{_bindir}/aurum_bootstrap
+#%{_unitdir_user}/aurum-bootstrap.service
+%{TZ_SYS_RO_PACKAGES}/org.tizen.aurum-bootstrap.xml
+%{TZ_SYS_RO_APP}/org.tizen.aurum-bootstrap/*
+