libaurum: add XML document map for parsing XML. 63/272063/3
authorHosang Kim <hosang12.kim@samsung.com>
Mon, 7 Mar 2022 14:46:38 +0000 (23:46 +0900)
committerkim hosang <hosang12.kim@samsung.com>
Thu, 24 Mar 2022 05:13:23 +0000 (05:13 +0000)
Change-Id: I86319b2f4a4f5350997395feaab548908e7b599f

libaurum/inc/Accessibility/AccessibleWatcher.h
libaurum/inc/Impl/Accessibility/AtspiAccessibleWatcher.h
libaurum/inc/Impl/Accessibility/MockAccessibleWatcher.h
libaurum/src/Impl/Accessibility/AtspiAccessibleWatcher.cc
libaurum/src/Impl/Accessibility/MockAccessibleWatcher.cc

index bdc5fb3..227b0de 100644 (file)
@@ -24,6 +24,7 @@
 #include "IEventSource.h"
 #include "Runnable.h"
 #include "A11yEvent.h"
 #include "IEventSource.h"
 #include "Runnable.h"
 #include "A11yEvent.h"
+#include "AurumXML.h"
 #include <atspi/atspi.h>
 
 #include <memory>
 #include <atspi/atspi.h>
 
 #include <memory>
@@ -117,6 +118,14 @@ public:
      */
     virtual std::map<AtspiAccessible *, std::shared_ptr<AccessibleApplication>> getActiveAppMap(void) = 0;
 
      */
     virtual std::map<AtspiAccessible *, std::shared_ptr<AccessibleApplication>> getActiveAppMap(void) = 0;
 
+    /**
+     * @brief Gets XML Document map.
+     *
+     * @return map (package std::string, @AurumXML)
+     * @since_tizen 7.0
+     */
+    virtual std::map<std::string, std::shared_ptr<AurumXML>> getXMLDocMap(void) = 0;
+
 public:
     /**
      * @brief Gets active application vector.
 public:
     /**
      * @brief Gets active application vector.
index 2a067d2..2f8e54a 100644 (file)
@@ -112,6 +112,11 @@ public:
      */
     virtual std::map<AtspiAccessible *, std::shared_ptr<AccessibleApplication>> getActiveAppMap(void) override;
 
      */
     virtual std::map<AtspiAccessible *, std::shared_ptr<AccessibleApplication>> getActiveAppMap(void) override;
 
+    /**
+     * @copydoc @AccessibleWatcher::getXMLDocMap()
+     */
+    virtual std::map<std::string, std::shared_ptr<AurumXML>> getXMLDocMap(void) override;
+
 public:
     /**
      * @brief Listen atspi events.
 public:
     /**
      * @brief Listen atspi events.
@@ -157,6 +162,7 @@ private:
     std::list<AtspiAccessible *> mActivatedApplicationList;
     std::set<AtspiAccessible *> mWindowSet;
     std::map<AtspiAccessible *, std::shared_ptr<AccessibleApplication>> mActiveAppMap;
     std::list<AtspiAccessible *> mActivatedApplicationList;
     std::set<AtspiAccessible *> mWindowSet;
     std::map<AtspiAccessible *, std::shared_ptr<AccessibleApplication>> mActiveAppMap;
+    std::map<std::string, std::shared_ptr<AurumXML>> mXMLDocMap;
     static GThread *mEventThread;
     static std::vector<std::shared_ptr<A11yEventInfo>> mEventQueue;
     static std::mutex mMutex;
     static GThread *mEventThread;
     static std::vector<std::shared_ptr<A11yEventInfo>> mEventQueue;
     static std::mutex mMutex;
index 68dace7..5dcce5d 100644 (file)
@@ -75,6 +75,8 @@ public:
 
     std::map<AtspiAccessible *, std::shared_ptr<AccessibleApplication>> getActiveAppMap(void);
 
 
     std::map<AtspiAccessible *, std::shared_ptr<AccessibleApplication>> getActiveAppMap(void);
 
+    std::map<std::string, std::shared_ptr<AurumXML>> getXMLDocMap(void);
+
 public:
     /**
      * @brief TBD
 public:
     /**
      * @brief TBD
@@ -95,6 +97,8 @@ private:
     std::vector<std::shared_ptr<AccessibleApplication>> mApplicationList;
 
     std::map<AtspiAccessible *, std::shared_ptr<AccessibleApplication>> mActiveAppMap;
     std::vector<std::shared_ptr<AccessibleApplication>> mApplicationList;
 
     std::map<AtspiAccessible *, std::shared_ptr<AccessibleApplication>> mActiveAppMap;
+    std::map<std::string, std::shared_ptr<AurumXML>> mXMLDocMap;
+
 };
 
 }
 };
 
 }
index 396e4b1..515acb6 100644 (file)
@@ -191,6 +191,11 @@ void AtspiAccessibleWatcher::onAtspiEvents(AtspiEvent *event, void *watcher)
             else {
                 LOGI("app(%s) is already in map", pkg);
             }
             else {
                 LOGI("app(%s) is already in map", pkg);
             }
+
+            if (!instance->mXMLDocMap.count(std::string(pkg))) {
+                instance->mXMLDocMap.insert(std::pair<std::string, std::shared_ptr<AurumXML>>(std::string(pkg),
+                                     std::make_shared<AurumXML>(std::make_shared<AtspiAccessibleNode>(app))));
+            }
         }
         else if (!strncmp(event->type, "window:deactivate", 16)) {
             LOGI("window deactivate in app(%s)", pkg);
         }
         else if (!strncmp(event->type, "window:deactivate", 16)) {
             LOGI("window deactivate in app(%s)", pkg);
@@ -202,6 +207,10 @@ void AtspiAccessibleWatcher::onAtspiEvents(AtspiEvent *event, void *watcher)
                 LOGE("deactivated window's app(%s) is not in map", pkg);
             }
 
                 LOGE("deactivated window's app(%s) is not in map", pkg);
             }
 
+            if (instance->mXMLDocMap.count(std::string(pkg))) {
+                instance->mXMLDocMap.erase(std::string(pkg));
+            }
+
             g_object_unref(app);
         }
     }
             g_object_unref(app);
         }
     }
@@ -307,6 +316,11 @@ std::map<AtspiAccessible *, std::shared_ptr<AccessibleApplication>> AtspiAccessi
     return mActiveAppMap;
 }
 
     return mActiveAppMap;
 }
 
+std::map<std::string, std::shared_ptr<AurumXML>> AtspiAccessibleWatcher::getXMLDocMap(void)
+{
+    return mXMLDocMap;
+}
+
 bool AtspiAccessibleWatcher::removeFromActivatedList(AtspiAccessible *node)
 {
     LOGI("remove from activelist node %p", node);
 bool AtspiAccessibleWatcher::removeFromActivatedList(AtspiAccessible *node)
 {
     LOGI("remove from activelist node %p", node);
index 52f5373..2a218d1 100644 (file)
@@ -55,6 +55,11 @@ std::map<AtspiAccessible *, std::shared_ptr<AccessibleApplication>> MockAccessib
     return mActiveAppMap;
 }
 
     return mActiveAppMap;
 }
 
+std::map<std::string, std::shared_ptr<AurumXML>> MockAccessibleWatcher::getXMLDocMap(void)
+{
+    return mXMLDocMap;
+}
+
 std::shared_ptr<MockAccessibleApplication> MockAccessibleWatcher::addApplication(std::string pkgName, Rect<int> geometry, int ifaces, int properties)
 {
     std::shared_ptr<MockAccessibleNode> appNode = std::make_shared<MockAccessibleNode>(nullptr, pkgName, pkgName, "application", "", "Elm_Win", "default", "", geometry, ifaces, properties);
 std::shared_ptr<MockAccessibleApplication> MockAccessibleWatcher::addApplication(std::string pkgName, Rect<int> geometry, int ifaces, int properties)
 {
     std::shared_ptr<MockAccessibleNode> appNode = std::make_shared<MockAccessibleNode>(nullptr, pkgName, pkgName, "application", "", "Elm_Win", "default", "", geometry, ifaces, properties);