Comparer: add condition for searching object with XPath. 57/273257/2
authorHosang Kim <hosang12.kim@samsung.com>
Fri, 1 Apr 2022 08:27:56 +0000 (17:27 +0900)
committerHosang Kim <hosang12.kim@samsung.com>
Mon, 4 Apr 2022 06:57:36 +0000 (15:57 +0900)
Change-Id: Id327cc2ce7173559d4a01df5108a86e49af3042f

libaurum/src/Comparer.cc

index 634d2e2..e559730 100644 (file)
@@ -57,6 +57,22 @@ std::vector<std::shared_ptr<AccessibleNode>> Comparer::findObjects(const std::sh
         return merged;
     }
 
+    if (selector->mMatchXPath) {
+        std::vector<std::shared_ptr<AccessibleNode>> merged{};
+
+        auto XMLDocMap = AccessibleWatcher::getInstance()->getXMLDocMap();
+        std::string pkg = root->getPkg();
+
+        if (XMLDocMap.count(pkg) == 0) return merged;
+
+        auto XMLDoc = XMLDocMap[pkg];
+
+        auto tmp = XMLDoc->findObjects(selector->mXPath);
+        std::move(std::begin(tmp), std::end(tmp), std::back_inserter(merged));
+
+        return merged;
+    }
+
     return comparer.findObjects(root);
 }