1 #include "ClickCommand.h"
8 ClickCommand::ClickCommand(const ::aurum::ReqClick* request,
9 ::aurum::RspClick* response)
10 : mRequest{request}, mResponse{response}
14 ::grpc::Status ClickCommand::execute()
16 return grpc::Status::CANCELLED;
19 std::unique_ptr<ClickCommand> ClickCommand::createCommand(const ::aurum::ReqClick* request, ::aurum::RspClick* response)
21 ::aurum::ReqClick_RequestType type = request->type();
23 if (type == ::aurum::ReqClick_RequestType::ReqClick_RequestType_ELEMENTID)
24 return std::make_unique<ClickElementCommand>(request, response);
25 else if (type == ::aurum::ReqClick_RequestType::ReqClick_RequestType_COORD)
26 return std::make_unique<ClickCoordCommand>(request, response);
27 else if (type == ::aurum::ReqClick_RequestType::ReqClick_RequestType_ATSPI)
28 return std::make_unique<ClickAtspiCommand>(request, response);
30 return std::make_unique<ClickCommand>(request, response);
33 ::grpc::Status ClickElementCommand::execute()
35 ObjectMapper* mObjMap = ObjectMapper::getInstance();
36 std::shared_ptr<UiObject> obj = mObjMap->getElement(mRequest->elementid());
37 LOG_SCOPE_F(INFO, "ClickElementCommand execute %p", obj);
41 mResponse->set_status(::aurum::RspStatus::OK);
43 mResponse->set_status(::aurum::RspStatus::ERROR);
45 return grpc::Status::OK;
48 ::grpc::Status ClickCoordCommand::execute()
50 std::shared_ptr<UiDevice> obj = UiDevice::getInstance();
51 const ::aurum::Point& point = mRequest->coordination();
52 LOG_SCOPE_F(INFO, "ClickCoordCommand execute %p @ (%d, %d)", obj.get(), point.x(), point.y());
53 obj->click(point.x(), point.y());
54 mResponse->set_status(::aurum::RspStatus::OK);
55 return grpc::Status::OK;
58 ::grpc::Status ClickAtspiCommand::execute()
60 ObjectMapper* mObjMap = ObjectMapper::getInstance();
61 std::shared_ptr<UiObject> obj = mObjMap->getElement(mRequest->elementid());
63 LOG_SCOPE_F(INFO, "ClickAtspiCommand execute %p", obj);
66 if (obj->DoAtspiActivate()) mResponse->set_status(::aurum::RspStatus::OK);
67 else mResponse->set_status(::aurum::RspStatus::ERROR);
69 mResponse->set_status(::aurum::RspStatus::ERROR);
72 return grpc::Status::OK;