From: Hosang Kim Date: Tue, 25 Feb 2025 09:52:47 +0000 (+0900) Subject: libaurum: Add ref_accessible API to convert the accessible object found by dump_tree X-Git-Tag: accepted/tizen/unified/20250509.120514~12 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=114eb8e1e8181840342e0d3f398b2b3df31172be;p=platform%2Fcore%2Fuifw%2Faurum.git libaurum: Add ref_accessible API to convert the accessible object found by dump_tree Change-Id: I243f33ce7929e7eb8c43855ba5cad1f0ef68ed28 --- diff --git a/libaurum/inc/Accessibility/AccessibleNode.h b/libaurum/inc/Accessibility/AccessibleNode.h index 4bf4a37..f1d4e89 100644 --- a/libaurum/inc/Accessibility/AccessibleNode.h +++ b/libaurum/inc/Accessibility/AccessibleNode.h @@ -169,6 +169,18 @@ public: */ virtual std::shared_ptr last() const = 0; + /** + * @brief Gets reference of AccessibleNode. + * + * @param[in] appName application name + * @param[in] path path of node + * + * @return AccessibleNode pointer + * + * @since_tizen 10.0 + */ + virtual std::shared_ptr refAccessibleNode(const std::string &appName, const std::string &path ) const = 0; + /** * @brief Called by @AccessibleWatcher::notifyAll. * Changes Node property If it's @EventType, @ObjectEventType are matches. diff --git a/libaurum/inc/Impl/Accessibility/AtspiAccessibleNode.h b/libaurum/inc/Impl/Accessibility/AtspiAccessibleNode.h index 790d543..149980d 100644 --- a/libaurum/inc/Impl/Accessibility/AtspiAccessibleNode.h +++ b/libaurum/inc/Impl/Accessibility/AtspiAccessibleNode.h @@ -105,6 +105,11 @@ public: */ std::shared_ptr last() const override; + /** + * @copydoc AccessibleNode::refAccessibleNode() + */ + std::shared_ptr refAccessibleNode(const std::string &appName, const std::string &path ) const override; + /** * @copydoc AccessibleNode::isValid() */ diff --git a/libaurum/inc/Impl/Accessibility/AtspiWrapper.h b/libaurum/inc/Impl/Accessibility/AtspiWrapper.h index eb2a23d..ad635b0 100644 --- a/libaurum/inc/Impl/Accessibility/AtspiWrapper.h +++ b/libaurum/inc/Impl/Accessibility/AtspiWrapper.h @@ -82,6 +82,7 @@ public: static void Atspi_accessible_set_include_hidden(AtspiAccessible *obj, gboolean enabled, GError **error); static gboolean Atspi_accessible_get_include_hidden(AtspiAccessible *obj, GError **error); static gchar *Atspi_accessible_dump_tree(AtspiAccessible *obj, AtspiDumpDetailLevelType detail_level, GError **error); + static AtspiAccessible *Atspi_ref_accessible(const gchar *app_name, const gchar *path); private: static std::recursive_mutex mMutex; diff --git a/libaurum/inc/Impl/Accessibility/MockAccessibleNode.h b/libaurum/inc/Impl/Accessibility/MockAccessibleNode.h index aaba614..f0bc7f0 100644 --- a/libaurum/inc/Impl/Accessibility/MockAccessibleNode.h +++ b/libaurum/inc/Impl/Accessibility/MockAccessibleNode.h @@ -104,6 +104,11 @@ public: */ std::shared_ptr last() const override; + /** + * @copydoc AccessibleNode::refAccessibleNode() + */ + std::shared_ptr refAccessibleNode(const std::string &appName, const std::string &path ) const override; + public: /** * @brief TBD diff --git a/libaurum/src/Impl/Accessibility/AtspiAccessibleNode.cc b/libaurum/src/Impl/Accessibility/AtspiAccessibleNode.cc index 192125c..316cd5e 100644 --- a/libaurum/src/Impl/Accessibility/AtspiAccessibleNode.cc +++ b/libaurum/src/Impl/Accessibility/AtspiAccessibleNode.cc @@ -802,4 +802,12 @@ bool AtspiAccessibleNode::getIncludeHidden() const } return false; -} \ No newline at end of file +} + +std::shared_ptr AtspiAccessibleNode::refAccessibleNode(const std::string &appName, const std::string &path) const +{ + AtspiAccessible *accessible = AtspiWrapper::Atspi_ref_accessible(appName.c_str(), path.c_str()); + auto node = std::make_shared(accessible); + + return node; +} diff --git a/libaurum/src/Impl/Accessibility/AtspiWrapper.cc b/libaurum/src/Impl/Accessibility/AtspiWrapper.cc index 4752565..ef531f1 100644 --- a/libaurum/src/Impl/Accessibility/AtspiWrapper.cc +++ b/libaurum/src/Impl/Accessibility/AtspiWrapper.cc @@ -302,3 +302,9 @@ gchar *AtspiWrapper::Atspi_accessible_dump_tree(AtspiAccessible *obj, AtspiDumpD std::unique_lock lock(mMutex); return atspi_accessible_dump_tree(obj, detail_level, error); } + +AtspiAccessible *AtspiWrapper::Atspi_ref_accessible(const gchar *app_name, const gchar *path) +{ + std::unique_lock lock(mMutex); + return ref_accessible(app_name, path); +} \ No newline at end of file diff --git a/libaurum/src/Impl/Accessibility/MockAccessibleNode.cc b/libaurum/src/Impl/Accessibility/MockAccessibleNode.cc index 448c2e8..5501b92 100644 --- a/libaurum/src/Impl/Accessibility/MockAccessibleNode.cc +++ b/libaurum/src/Impl/Accessibility/MockAccessibleNode.cc @@ -349,4 +349,10 @@ void MockAccessibleNode::setIncludeHidden(bool enabled) const bool MockAccessibleNode::getIncludeHidden() const { return false; -} \ No newline at end of file +} + +std::shared_ptr MockAccessibleNode::refAccessibleNode(const std::string &appName, const std::string &path) const +{ + return nullptr; +} +