From: Youngsun Suh Date: Tue, 21 Jan 2025 01:39:01 +0000 (+0900) Subject: Add dumpTree api to AccessibleNode X-Git-Tag: accepted/tizen/unified/20250124.043542~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F80%2F318580%2F2;p=platform%2Fcore%2Fuifw%2Faurum.git Add dumpTree api to AccessibleNode Change-Id: Ibca686636e01156240614728a0796e2ce2566079 --- diff --git a/libaurum/inc/Accessibility/AccessibleNode.h b/libaurum/inc/Accessibility/AccessibleNode.h index 6874b09..87e30df 100644 --- a/libaurum/inc/Accessibility/AccessibleNode.h +++ b/libaurum/inc/Accessibility/AccessibleNode.h @@ -141,6 +141,13 @@ public: */ virtual std::vector> getMatchesInMatches(const std::shared_ptr firstSelector, const std::shared_ptr secondSelector, const bool ealryReturn) const = 0; + /** + * @brief dump current tree in json string + * + * @return string + */ + virtual std::string dumpTree() const = 0; + /** * @copydoc UiObject::next() */ diff --git a/libaurum/inc/Impl/Accessibility/AtspiAccessibleNode.h b/libaurum/inc/Impl/Accessibility/AtspiAccessibleNode.h index 0834e2e..790d543 100644 --- a/libaurum/inc/Impl/Accessibility/AtspiAccessibleNode.h +++ b/libaurum/inc/Impl/Accessibility/AtspiAccessibleNode.h @@ -80,6 +80,11 @@ public: */ std::vector> getMatchesInMatches(const std::shared_ptr firstSelector, const std::shared_ptr secondSelector, const bool ealryReturn) const override; + /** + * @copydoc AccessibleNode::dumpTree() + */ + std::string dumpTree() const override; + /** * @copydoc UiObject::next() */ diff --git a/libaurum/inc/Impl/Accessibility/AtspiWrapper.h b/libaurum/inc/Impl/Accessibility/AtspiWrapper.h index 8a54e26..eb2a23d 100644 --- a/libaurum/inc/Impl/Accessibility/AtspiWrapper.h +++ b/libaurum/inc/Impl/Accessibility/AtspiWrapper.h @@ -81,6 +81,7 @@ public: 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); + static gchar *Atspi_accessible_dump_tree(AtspiAccessible *obj, AtspiDumpDetailLevelType detail_level, 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 bd73f29..aaba614 100644 --- a/libaurum/inc/Impl/Accessibility/MockAccessibleNode.h +++ b/libaurum/inc/Impl/Accessibility/MockAccessibleNode.h @@ -79,6 +79,11 @@ public: */ std::vector> getMatchesInMatches(const std::shared_ptr firstSelector, const std::shared_ptr secondSelector, const bool ealryReturn) const override; + /** + * @copydoc AccessibleNode::dumpTree() + */ + std::string dumpTree() const override; + /** * @copydoc UiObject::next() */ diff --git a/libaurum/src/Impl/Accessibility/AtspiAccessibleNode.cc b/libaurum/src/Impl/Accessibility/AtspiAccessibleNode.cc index ceea20c..ed571b3 100644 --- a/libaurum/src/Impl/Accessibility/AtspiAccessibleNode.cc +++ b/libaurum/src/Impl/Accessibility/AtspiAccessibleNode.cc @@ -692,6 +692,22 @@ std::vector> AtspiAccessibleNode::getMatchesInMa return ret; } +std::string AtspiAccessibleNode::dumpTree() const +{ + if (!isValid()) { + return {}; + } + + gchar *c_result = AtspiWrapper::Atspi_accessible_dump_tree(mNode, ATSPI_DUMP_FULL_SHOWING_ONLY, NULL); + if (c_result) { + std::string result{c_result}; + g_free(c_result); + return result; + } + + return {}; +} + std::shared_ptr AtspiAccessibleNode::next() const { if (!isValid()) { diff --git a/libaurum/src/Impl/Accessibility/AtspiWrapper.cc b/libaurum/src/Impl/Accessibility/AtspiWrapper.cc index 4b3955b..4752565 100644 --- a/libaurum/src/Impl/Accessibility/AtspiWrapper.cc +++ b/libaurum/src/Impl/Accessibility/AtspiWrapper.cc @@ -296,3 +296,9 @@ gboolean AtspiWrapper::Atspi_accessible_get_include_hidden(AtspiAccessible *obj, std::unique_lock lock(mMutex); return atspi_accessible_get_include_hidden(obj, error); } + +gchar *AtspiWrapper::Atspi_accessible_dump_tree(AtspiAccessible *obj, AtspiDumpDetailLevelType detail_level, GError **error) +{ + std::unique_lock lock(mMutex); + return atspi_accessible_dump_tree(obj, detail_level, error); +} diff --git a/libaurum/src/Impl/Accessibility/MockAccessibleNode.cc b/libaurum/src/Impl/Accessibility/MockAccessibleNode.cc index 4cc25b4..448c2e8 100644 --- a/libaurum/src/Impl/Accessibility/MockAccessibleNode.cc +++ b/libaurum/src/Impl/Accessibility/MockAccessibleNode.cc @@ -125,6 +125,10 @@ std::vector> MockAccessibleNode::getMatchesInMat return ret; } +std::string MockAccessibleNode::dumpTree() const +{ + return {"{}"}; +} void* MockAccessibleNode::getRawHandler(void) const { diff --git a/libaurum/src/c_bindings/AurumCBindings.cc b/libaurum/src/c_bindings/AurumCBindings.cc index 9aa581f..1a7e2d2 100644 --- a/libaurum/src/c_bindings/AurumCBindings.cc +++ b/libaurum/src/c_bindings/AurumCBindings.cc @@ -41,9 +41,8 @@ const char* dump_screen() dumpResult += " : ["; for (const auto& root: windowRoots) { - // TODO: implement dump logic - // root->dump(); - dumpResult += "{},"; + dumpResult += root->dumpTree(); + dumpResult += ","; } // remove last comma if exists.