From 87cf221c5afb36c9c1741db3d9914477f0417d06 Mon Sep 17 00:00:00 2001 From: Hosang Kim Date: Wed, 13 Nov 2024 15:31:18 +0900 Subject: [PATCH] libaurum: Introduce new setIncludeHidden/getIncludeHidden Change-Id: I25ca1289128ad1a16b5079aadb8e7c8ec9d45d0b --- libaurum/inc/Accessibility/AccessibleNode.h | 10 +++++ .../Impl/Accessibility/AtspiAccessibleNode.h | 10 +++++ .../inc/Impl/Accessibility/AtspiWrapper.h | 2 + .../Impl/Accessibility/MockAccessibleNode.h | 12 ++++++ libaurum/inc/UiObject.h | 14 +++++++ .../Impl/Accessibility/AtspiAccessibleNode.cc | 27 ++++++++++++ .../src/Impl/Accessibility/AtspiWrapper.cc | 11 +++++ .../Impl/Accessibility/MockAccessibleNode.cc | 10 +++++ libaurum/src/UiObject.cc | 8 ++++ .../inc/AurumServiceImpl.h | 6 +++ .../inc/Commands/Commands.h | 2 + .../inc/Commands/GetIncludeHiddenCommand.h | 29 +++++++++++++ .../inc/Commands/SetIncludeHiddenCommand.h | 29 +++++++++++++ org.tizen.aurum-bootstrap/meson.build | 2 + .../src/AurumServiceImpl.cc | 16 ++++++++ .../src/Commands/GetIncludeHiddenCommand.cc | 41 +++++++++++++++++++ .../src/Commands/SetIncludeHiddenCommand.cc | 38 +++++++++++++++++ protocol/aurum.proto | 20 +++++++++ 18 files changed, 287 insertions(+) create mode 100644 org.tizen.aurum-bootstrap/inc/Commands/GetIncludeHiddenCommand.h create mode 100644 org.tizen.aurum-bootstrap/inc/Commands/SetIncludeHiddenCommand.h create mode 100644 org.tizen.aurum-bootstrap/src/Commands/GetIncludeHiddenCommand.cc create mode 100644 org.tizen.aurum-bootstrap/src/Commands/SetIncludeHiddenCommand.cc diff --git a/libaurum/inc/Accessibility/AccessibleNode.h b/libaurum/inc/Accessibility/AccessibleNode.h index bee5e66..c9524f9 100644 --- a/libaurum/inc/Accessibility/AccessibleNode.h +++ b/libaurum/inc/Accessibility/AccessibleNode.h @@ -558,6 +558,16 @@ public: */ virtual bool isValid() const; + /** + * @copydoc UIObject::setIncludeHidden() + */ + virtual void setIncludeHidden(bool enabled) const = 0; + + /** + * @copydoc UIObject::getIncludeHidden() + */ + virtual bool getIncludeHidden() const = 0; + public: /** * @brief Check Node support given interface or not. diff --git a/libaurum/inc/Impl/Accessibility/AtspiAccessibleNode.h b/libaurum/inc/Impl/Accessibility/AtspiAccessibleNode.h index 98b1bf7..0834e2e 100644 --- a/libaurum/inc/Impl/Accessibility/AtspiAccessibleNode.h +++ b/libaurum/inc/Impl/Accessibility/AtspiAccessibleNode.h @@ -211,6 +211,16 @@ public: */ bool setValue(double value) override; + /** + * @copydoc AccessibleNode::setIncludeHidden() + */ + void setIncludeHidden(bool enabled) const override; + + /** + * @copydoc AccessibleNode::getIncludeHidden() + */ + bool getIncludeHidden() const override; + private: using AccessibleNode::setFeatureProperty; diff --git a/libaurum/inc/Impl/Accessibility/AtspiWrapper.h b/libaurum/inc/Impl/Accessibility/AtspiWrapper.h index 764c7d3..8a54e26 100644 --- a/libaurum/inc/Impl/Accessibility/AtspiWrapper.h +++ b/libaurum/inc/Impl/Accessibility/AtspiWrapper.h @@ -79,6 +79,8 @@ public: static AtspiAccessibleNodeInfo *Atspi_accessible_get_node_info(AtspiAccessible *obj, GError **error); static void Atspi_accessible_free_node_info(AtspiAccessibleNodeInfo *node_info); static AtspiAccessible *Atspi_accessible_get_neighbor(AtspiAccessible *root, AtspiAccessible *start, AtspiNeighborSearchDirection direction, GError **error); + static void Atspi_accessible_set_include_hidden(AtspiAccessible *obj, gboolean enabled, GError **error); + static gboolean Atspi_accessible_get_include_hidden(AtspiAccessible *obj, GError **error); private: static std::recursive_mutex mMutex; diff --git a/libaurum/inc/Impl/Accessibility/MockAccessibleNode.h b/libaurum/inc/Impl/Accessibility/MockAccessibleNode.h index 3a0714a..bd73f29 100644 --- a/libaurum/inc/Impl/Accessibility/MockAccessibleNode.h +++ b/libaurum/inc/Impl/Accessibility/MockAccessibleNode.h @@ -225,6 +225,18 @@ public: */ bool setValue(double value) override; + /** + * @brief TBD + * @since_tizen 9.0 + */ + void setIncludeHidden(bool enabled) const override; + + /** + * @brief TBD + * @since_tizen 9.0 + */ + bool getIncludeHidden() const override; + public: using AccessibleNode::setFeatureProperty; /** diff --git a/libaurum/inc/UiObject.h b/libaurum/inc/UiObject.h index a3d1962..7968155 100644 --- a/libaurum/inc/UiObject.h +++ b/libaurum/inc/UiObject.h @@ -759,6 +759,20 @@ public: */ std::shared_ptr last() const; + /** + * @brief Sets object's include hidden flag. + * + * @since_tizen 9.0 + */ + void setIncludeHidden(bool enabled) const; + + /** + * @brief Gets object's include hidden flag. + * + * @since_tizen 9.0 + */ + bool getIncludeHidden() const; + private: std::shared_ptr mDevice; std::shared_ptr mSelector; diff --git a/libaurum/src/Impl/Accessibility/AtspiAccessibleNode.cc b/libaurum/src/Impl/Accessibility/AtspiAccessibleNode.cc index 4f11022..b82f0a6 100644 --- a/libaurum/src/Impl/Accessibility/AtspiAccessibleNode.cc +++ b/libaurum/src/Impl/Accessibility/AtspiAccessibleNode.cc @@ -752,4 +752,31 @@ std::shared_ptr AtspiAccessibleNode::last() const } return nullptr; +} + +void AtspiAccessibleNode::setIncludeHidden(bool enabled) const +{ + if (!isValid()) { + return; + } + AtspiAccessible *app = AtspiWrapper::Atspi_accessible_get_application(mNode, NULL); + if (app) { + AtspiWrapper::Atspi_accessible_set_include_hidden(app, enabled, NULL); + g_object_unref(app); + } +} + +bool AtspiAccessibleNode::getIncludeHidden() const +{ + if (!isValid()) { + return false; + } + AtspiAccessible *app = AtspiWrapper::Atspi_accessible_get_application(mNode, NULL); + if (app) { + bool ret = AtspiWrapper::Atspi_accessible_get_include_hidden(app, NULL); + g_object_unref(app); + return ret; + } + + return false; } \ No newline at end of file diff --git a/libaurum/src/Impl/Accessibility/AtspiWrapper.cc b/libaurum/src/Impl/Accessibility/AtspiWrapper.cc index 4b06ccb..4b3955b 100644 --- a/libaurum/src/Impl/Accessibility/AtspiWrapper.cc +++ b/libaurum/src/Impl/Accessibility/AtspiWrapper.cc @@ -285,3 +285,14 @@ AtspiAccessible *AtspiWrapper::Atspi_accessible_get_neighbor(AtspiAccessible *ro return atspi_accessible_get_neighbor(root, start, direction, error); } +void AtspiWrapper::Atspi_accessible_set_include_hidden(AtspiAccessible *obj, gboolean enabled, GError **error) +{ + std::unique_lock lock(mMutex); + atspi_accessible_set_include_hidden(obj, enabled, error); +} + +gboolean AtspiWrapper::Atspi_accessible_get_include_hidden(AtspiAccessible *obj, GError **error) +{ + std::unique_lock lock(mMutex); + return atspi_accessible_get_include_hidden(obj, error); +} diff --git a/libaurum/src/Impl/Accessibility/MockAccessibleNode.cc b/libaurum/src/Impl/Accessibility/MockAccessibleNode.cc index aa136cf..4cc25b4 100644 --- a/libaurum/src/Impl/Accessibility/MockAccessibleNode.cc +++ b/libaurum/src/Impl/Accessibility/MockAccessibleNode.cc @@ -335,4 +335,14 @@ std::shared_ptr MockAccessibleNode::first() const std::shared_ptr MockAccessibleNode::last() const { return nullptr; +} + +void MockAccessibleNode::setIncludeHidden(bool enabled) const +{ + return; +} + +bool MockAccessibleNode::getIncludeHidden() const +{ + return false; } \ No newline at end of file diff --git a/libaurum/src/UiObject.cc b/libaurum/src/UiObject.cc index d8b3ab4..b15f2d9 100644 --- a/libaurum/src/UiObject.cc +++ b/libaurum/src/UiObject.cc @@ -525,4 +525,12 @@ std::shared_ptr UiObject::last() const { return std::make_shared(mDevice, mSelector, lastNode); } return nullptr; +} + +void UiObject::setIncludeHidden(bool enabled) const { + mNode->setIncludeHidden(enabled); +} + +bool UiObject::getIncludeHidden() const { + return mNode->getIncludeHidden(); } \ No newline at end of file diff --git a/org.tizen.aurum-bootstrap/inc/AurumServiceImpl.h b/org.tizen.aurum-bootstrap/inc/AurumServiceImpl.h index b46f12c..85fb4aa 100644 --- a/org.tizen.aurum-bootstrap/inc/AurumServiceImpl.h +++ b/org.tizen.aurum-bootstrap/inc/AurumServiceImpl.h @@ -159,6 +159,12 @@ public: ::grpc::Status mouseMove(::grpc::ServerContext *context, const ::aurum::ReqMouseMove *request, ::aurum::RspMouseMove *response) override; + ::grpc::Status setIncludeHidden(::grpc::ServerContext *context, + const ::aurum::ReqSetIncludeHidden *request, + ::aurum::RspSetIncludeHidden *response) override; + ::grpc::Status getIncludeHidden(::grpc::ServerContext *context, + const ::aurum::ReqGetIncludeHidden *request, + ::aurum::RspGetIncludeHidden *response) override; public: int WAIT_TIMEOUT_MS; }; diff --git a/org.tizen.aurum-bootstrap/inc/Commands/Commands.h b/org.tizen.aurum-bootstrap/inc/Commands/Commands.h index 9d41566..5ecac85 100644 --- a/org.tizen.aurum-bootstrap/inc/Commands/Commands.h +++ b/org.tizen.aurum-bootstrap/inc/Commands/Commands.h @@ -55,3 +55,5 @@ #include "Commands/MouseDownCommand.h" #include "Commands/MouseMoveCommand.h" #include "Commands/MouseUpCommand.h" +#include "Commands/SetIncludeHiddenCommand.h" +#include "Commands/GetIncludeHiddenCommand.h" diff --git a/org.tizen.aurum-bootstrap/inc/Commands/GetIncludeHiddenCommand.h b/org.tizen.aurum-bootstrap/inc/Commands/GetIncludeHiddenCommand.h new file mode 100644 index 0000000..4af0a07 --- /dev/null +++ b/org.tizen.aurum-bootstrap/inc/Commands/GetIncludeHiddenCommand.h @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2024 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "bootstrap.h" + +class GetIncludeHiddenCommand : public Command { +private: + const ::aurum::ReqGetIncludeHidden *mRequest; + ::aurum::RspGetIncludeHidden *mResponse; + +public: + GetIncludeHiddenCommand(const ::aurum::ReqGetIncludeHidden *request, + ::aurum::RspGetIncludeHidden *response); + ::grpc::Status execute() override; +}; diff --git a/org.tizen.aurum-bootstrap/inc/Commands/SetIncludeHiddenCommand.h b/org.tizen.aurum-bootstrap/inc/Commands/SetIncludeHiddenCommand.h new file mode 100644 index 0000000..959065e --- /dev/null +++ b/org.tizen.aurum-bootstrap/inc/Commands/SetIncludeHiddenCommand.h @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2024 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "bootstrap.h" + +class SetIncludeHiddenCommand : public Command { +private: + const ::aurum::ReqSetIncludeHidden *mRequest; + ::aurum::RspSetIncludeHidden *mResponse; + +public: + SetIncludeHiddenCommand(const ::aurum::ReqSetIncludeHidden *request, + ::aurum::RspSetIncludeHidden *response); + ::grpc::Status execute() override; +}; diff --git a/org.tizen.aurum-bootstrap/meson.build b/org.tizen.aurum-bootstrap/meson.build index 315b844..4025cb4 100644 --- a/org.tizen.aurum-bootstrap/meson.build +++ b/org.tizen.aurum-bootstrap/meson.build @@ -58,6 +58,8 @@ bootstrap_svr_src += [ files('src/Commands/MouseDownCommand.cc'), files('src/Commands/MouseMoveCommand.cc'), files('src/Commands/MouseUpCommand.cc'), + files('src/Commands/SetIncludeHiddenCommand.cc'), + files('src/Commands/GetIncludeHiddenCommand.cc'), ] bootstrap_svr_dep = [ diff --git a/org.tizen.aurum-bootstrap/src/AurumServiceImpl.cc b/org.tizen.aurum-bootstrap/src/AurumServiceImpl.cc index a8642cc..b504ec4 100644 --- a/org.tizen.aurum-bootstrap/src/AurumServiceImpl.cc +++ b/org.tizen.aurum-bootstrap/src/AurumServiceImpl.cc @@ -374,4 +374,20 @@ aurumServiceImpl::~aurumServiceImpl() { std::unique_ptr cmd = std::make_unique(request, response); return execute(cmd.get(), false); +} + +::grpc::Status aurumServiceImpl::setIncludeHidden(::grpc::ServerContext *context, + const ::aurum::ReqSetIncludeHidden *request, + ::aurum::RspSetIncludeHidden *response) +{ + std::unique_ptr cmd = std::make_unique(request, response); + return execute(cmd.get(), false); +} + +::grpc::Status aurumServiceImpl::getIncludeHidden(::grpc::ServerContext *context, + const ::aurum::ReqGetIncludeHidden *request, + ::aurum::RspGetIncludeHidden *response) +{ + std::unique_ptr cmd = std::make_unique(request, response); + return execute(cmd.get(), false); } \ No newline at end of file diff --git a/org.tizen.aurum-bootstrap/src/Commands/GetIncludeHiddenCommand.cc b/org.tizen.aurum-bootstrap/src/Commands/GetIncludeHiddenCommand.cc new file mode 100644 index 0000000..09a1acb --- /dev/null +++ b/org.tizen.aurum-bootstrap/src/Commands/GetIncludeHiddenCommand.cc @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2024 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "GetIncludeHiddenCommand.h" +#include "UiObject.h" + +GetIncludeHiddenCommand::GetIncludeHiddenCommand(const ::aurum::ReqGetIncludeHidden *request, + ::aurum::RspGetIncludeHidden *response) + : mRequest{request}, mResponse{response} +{ +} + +::grpc::Status GetIncludeHiddenCommand::execute() +{ + LOGI("GetIncludeHidden--------------- "); + + ObjectMapper *mObjMap = ObjectMapper::getInstance(); + std::shared_ptr obj = mObjMap->getElement(mRequest->elementid()); + if (obj) { + mResponse->set_enabled(obj->getIncludeHidden()); + mResponse->set_status(::aurum::RspStatus::OK); + } else { + mResponse->set_status(::aurum::RspStatus::ERROR); + } + + return grpc::Status::OK; +} diff --git a/org.tizen.aurum-bootstrap/src/Commands/SetIncludeHiddenCommand.cc b/org.tizen.aurum-bootstrap/src/Commands/SetIncludeHiddenCommand.cc new file mode 100644 index 0000000..b065758 --- /dev/null +++ b/org.tizen.aurum-bootstrap/src/Commands/SetIncludeHiddenCommand.cc @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2024 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "SetIncludeHiddenCommand.h" +#include "UiObject.h" + +SetIncludeHiddenCommand::SetIncludeHiddenCommand(const ::aurum::ReqSetIncludeHidden *request, + ::aurum::RspSetIncludeHidden *response) + : mRequest{request}, mResponse{response} +{ +} + +::grpc::Status SetIncludeHiddenCommand::execute() +{ + LOGI("SetIncludeHidden--------------- "); + + ObjectMapper *mObjMap = ObjectMapper::getInstance(); + std::shared_ptr obj = mObjMap->getElement(mRequest->elementid()); + if (obj) obj->setIncludeHidden(mRequest->enabled()); + + mResponse->set_status(::aurum::RspStatus::OK); + + return grpc::Status::OK; +} diff --git a/protocol/aurum.proto b/protocol/aurum.proto index 9dc8fb6..1ecdafa 100644 --- a/protocol/aurum.proto +++ b/protocol/aurum.proto @@ -47,6 +47,8 @@ service Bootstrap { rpc mouseDown(ReqMouseDown) returns (RspMouseDown) {} rpc mouseMove(ReqMouseMove) returns (RspMouseMove) {} rpc mouseUp(ReqMouseUp) returns (RspMouseUp) {} + rpc setIncludeHidden(ReqSetIncludeHidden) returns (RspSetIncludeHidden) {} + rpc getIncludeHidden(ReqGetIncludeHidden) returns (RspGetIncludeHidden) {} } // ------------------------------------ // @@ -760,3 +762,21 @@ message RspGetParent { RspStatus status = 1; Element element = 2; } + +message ReqSetIncludeHidden { + string elementId = 1; + bool enabled = 2; +} + +message RspSetIncludeHidden { + RspStatus status = 1; +} + +message ReqGetIncludeHidden { + string elementId = 1; +} + +message RspGetIncludeHidden { + RspStatus status = 1; + bool enabled = 2; +} -- 2.34.1