[AT-SPI] Change Relation target from Address to Accessible 33/275033/3
authorArtur Świgoń <a.swigon@samsung.com>
Fri, 13 May 2022 11:35:35 +0000 (13:35 +0200)
committerArtur Świgoń <a.swigon@samsung.com>
Thu, 19 May 2022 14:57:45 +0000 (16:57 +0200)
It is not necessary to manually convert an Accessible* to an Address,
because this conversion takes place automatically during serialization
of D-Bus data, and the Accessible* type is generally more useful.

Change-Id: Id58c0b6ab16fd365184d3b070a2b7105a2ac686d

dali/devel-api/adaptor-framework/accessibility.h
dali/internal/accessibility/bridge/bridge-accessible.cpp
dali/internal/accessibility/bridge/bridge-accessible.h

index f3576c6..77c7257 100644 (file)
@@ -30,6 +30,8 @@ namespace Dali
 {\r
 namespace Accessibility\r
 {\r
+class Accessible;\r
+\r
 /**\r
  * @brief Enumeration describing type of object move relative to the screen. Only outgoing moves are signalled to AT-clients.\r
  */\r
@@ -711,22 +713,26 @@ struct DALI_ADAPTOR_API GestureInfo
 \r
 /**\r
  * @brief Class representing accessibility relations\r
+ *\r
  * Class connecting one source object with multiple target objects with usage\r
  * of specific relation type.\r
- * @note std::string representing source and targets are string values of Accessibility::Address\r
- * @see Dali::Accessibility::Accessible::Address\r
+ *\r
+ * A remote target object (i.e. one belonging to a different process) can be\r
+ * represented in terms of a ProxyAccessible.\r
+ *\r
+ * @see Dali::Accessibility::Accessible::Accessible\r
  * @see Dali::Accessibility::Accessible::RelationType\r
  */\r
 struct DALI_ADAPTOR_API Relation\r
 {\r
-  Relation(RelationType relationType, std::vector<Address> targets)\r
-  : relationType(relationType),\r
-    targets(targets)\r
+  Relation(RelationType relationType, const std::vector<Accessible*>& targets)\r
+  : mRelationType(relationType),\r
+    mTargets(targets)\r
   {\r
   }\r
 \r
-  RelationType         relationType;\r
-  std::vector<Address> targets;\r
+  RelationType             mRelationType;\r
+  std::vector<Accessible*> mTargets;\r
 };\r
 \r
 } // namespace Accessibility\r
index 5f71a60..a7ecf8e 100644 (file)
@@ -107,7 +107,7 @@ static bool AcceptObjectCheckRelations(Component* obj)
 
   for(const auto& it : relations)
   {
-    if(it.relationType == RelationType::CONTROLLED_BY)
+    if(it.mRelationType == RelationType::CONTROLLED_BY)
     {
       return false;
     }
@@ -437,11 +437,11 @@ Component* BridgeAccessible::GetObjectInRelation(Accessible* obj, RelationType r
 
   for(auto& relation : obj->GetRelationSet())
   {
-    if(relation.relationType == relationType)
+    if(relation.mRelationType == relationType)
     {
-      for(auto& address : relation.targets)
+      for(auto& target : relation.mTargets)
       {
-        auto component = dynamic_cast<Component*>(Find(address));
+        auto component = dynamic_cast<Component*>(target);
         if(component)
         {
           return component;
@@ -504,9 +504,9 @@ BridgeAccessible::ReadingMaterialType BridgeAccessible::GetReadingMaterial()
     auto relation  = std::find_if(relations.begin(),
                                  relations.end(),
                                  [relationType](const Dali::Accessibility::Relation& relation) -> bool {
-                                   return relation.relationType == relationType;
+                                   return relation.mRelationType == relationType;
                                  });
-    return relations.end() != relation && !relation->targets.empty() ? Find(relation->targets.back()) : nullptr;
+    return relations.end() != relation && !relation->mTargets.empty() ? relation->mTargets.back() : nullptr;
   };
 
   auto        labellingObject = findObjectByRelationType(RelationType::LABELLED_BY);
@@ -1061,7 +1061,7 @@ DBus::ValueOrError<std::vector<BridgeAccessible::Relation>> BridgeAccessible::Ge
 
   for(auto& it : relations)
   {
-    ret.emplace_back(Relation{static_cast<uint32_t>(it.relationType), it.targets});
+    ret.emplace_back(Relation{static_cast<uint32_t>(it.mRelationType), it.mTargets});
   }
 
   return ret;
index 219c530..0a3299c 100644 (file)
@@ -91,7 +91,7 @@ public:
     Dali::Accessibility::Accessible*  // describedByObject
     >;
 
-  using Relation = std::tuple<uint32_t, std::vector<Dali::Accessibility::Address>>;
+  using Relation = std::tuple<uint32_t, std::vector<Dali::Accessibility::Accessible*>>;
 
   /**
    * @copydoc Dali::Accessibility::Accessible::GetChildCount()