[ATSPI] Introduce SetListenPostRender interface
[platform/core/uifw/dali-adaptor.git] / dali / internal / accessibility / bridge / accessible.cpp
index fb75de8..bc3557b 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2023 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 // CLASS HEADER
 
 //INTERNAL INCLUDES
+#include <dali/devel-api/adaptor-framework/accessibility-bridge.h>
+#include <dali/devel-api/atspi-interfaces/accessible.h>
+#include <dali/devel-api/atspi-interfaces/socket.h>
 #include <dali/internal/accessibility/bridge/accessibility-common.h>
-#include <third-party/libunibreak/linebreak.h>
-#include <third-party/libunibreak/wordbreak.h>
 
 using namespace Dali::Accessibility;
 
-std::vector<std::string> Accessible::GetInterfaces()
-{
-  std::vector<std::string> tmp;
-  tmp.push_back(AtspiDbusInterfaceAccessible);
-  if(dynamic_cast<Collection*>(this))
-  {
-    tmp.push_back(AtspiDbusInterfaceCollection);
-  }
-  if(dynamic_cast<Text*>(this))
-  {
-    tmp.push_back(AtspiDbusInterfaceText);
-  }
-  if(dynamic_cast<EditableText*>(this))
-  {
-    tmp.push_back(AtspiDbusInterfaceEditableText);
-  }
-  if(dynamic_cast<Value*>(this))
-  {
-    tmp.push_back(AtspiDbusInterfaceValue);
-  }
-  if(dynamic_cast<Component*>(this))
-  {
-    tmp.push_back(AtspiDbusInterfaceComponent);
-  }
-  if(auto action = dynamic_cast<Action*>(this))
-  {
-    if(action->GetActionCount() > 0)
-    {
-      tmp.push_back(AtspiDbusInterfaceAction);
-    }
-  }
-  if(dynamic_cast<Selection*>(this))
-  {
-    tmp.push_back(AtspiDbusInterfaceSelection);
-  }
-  return tmp;
-}
-
 Accessible::Accessible()
 {
 }
 
-Accessible::~Accessible()
+Accessible::~Accessible() noexcept
 {
   auto handle = mBridgeData.lock();
   if(handle)
@@ -75,11 +38,11 @@ Accessible::~Accessible()
   }
 }
 
-void Accessible::EmitActiveDescendantChanged(Accessible* obj, Accessible* child)
+void Accessible::EmitActiveDescendantChanged(Accessible* child)
 {
   if(auto bridgeData = GetBridgeData())
   {
-    bridgeData->mBridge->EmitActiveDescendantChanged(obj, child);
+    bridgeData->mBridge->EmitActiveDescendantChanged(this, child);
   }
 }
 
@@ -143,6 +106,25 @@ void Accessible::EmitTextCursorMoved(unsigned int cursorPosition)
     bridgeData->mBridge->EmitCursorMoved(this, cursorPosition);
   }
 }
+
+void Accessible::EmitMovedOutOfScreen(ScreenRelativeMoveType type)
+{
+  if(auto bridgeData = GetBridgeData())
+  {
+    bridgeData->mBridge->EmitMovedOutOfScreen(this, type);
+  }
+}
+
+void Accessible::EmitSocketAvailable()
+{
+  DALI_ASSERT_DEBUG(Socket::DownCast(this));
+
+  if(auto bridgeData = GetBridgeData())
+  {
+    bridgeData->mBridge->EmitSocketAvailable(this);
+  }
+}
+
 void Accessible::Emit(WindowEvent event, unsigned int detail)
 {
   if(auto bridgeData = GetBridgeData())
@@ -166,28 +148,18 @@ void Accessible::EmitBoundsChanged(Rect<> rect)
   }
 }
 
-std::vector<Accessible*> Accessible::GetChildren()
-{
-  std::vector<Accessible*> tmp(GetChildCount());
-  for(auto i = 0u; i < tmp.size(); ++i)
-  {
-    tmp[i] = GetChildAtIndex(i);
-  }
-  return tmp;
-}
-
-std::shared_ptr<Bridge::Data> Accessible::GetBridgeData()
+std::shared_ptr<Bridge::Data> Accessible::GetBridgeData() const
 {
   auto handle = mBridgeData.lock();
   if(!handle)
   {
     auto bridge = Bridge::GetCurrentBridge();
-    handle = bridge->mData;
+    handle      = bridge->mData;
   }
   return handle;
 }
 
-Address Accessible::GetAddress()
+Address Accessible::GetAddress() const
 {
   auto handle = mBridgeData.lock();
   if(!handle)
@@ -203,7 +175,7 @@ Address Accessible::GetAddress()
   return {handle ? handle->mBusName : "", tmp.str()};
 }
 
-void Bridge::RegisterOnBridge(Accessible* object)
+void Bridge::RegisterOnBridge(const Accessible* object)
 {
   assert(!object->mBridgeData.lock() || object->mBridgeData.lock() == mData);
   if(!object->mBridgeData.lock())
@@ -214,27 +186,30 @@ void Bridge::RegisterOnBridge(Accessible* object)
   }
 }
 
-bool Accessible::IsProxy()
+bool Accessible::IsHidden() const
 {
   return false;
 }
 
-Accessible* Accessible::GetDefaultLabel()
+void Accessible::SetListenPostRender(bool enabled)
+{
+}
+
+bool Accessible::IsProxy() const
 {
-  return this;
+  return false;
 }
 
 void Accessible::NotifyAccessibilityStateChange(Dali::Accessibility::States states, bool isRecursive)
 {
   if(auto data = GetBridgeData())
   {
-    auto currentState = GetStates() & states;
-    for(auto i = 0u; i < currentState.size(); i++)
+    for(auto i = 0u; i < static_cast<unsigned int>(Dali::Accessibility::State::MAX_COUNT); i++)
     {
       auto index = static_cast<Dali::Accessibility::State>(i);
-      if(currentState[index])
+      if(states[index])
       {
-        data->mBridge->EmitStateChanged(this, index, 1, 0);
+        data->mBridge->EmitStateChanged(this, index, GetStates()[index], 0);
       }
     }
 
@@ -248,13 +223,3 @@ void Accessible::NotifyAccessibilityStateChange(Dali::Accessibility::States stat
     }
   }
 }
-
-void Accessible::FindWordSeparationsUtf8(const utf8_t* string, size_t length, const char* language, char* breaks)
-{
-  set_wordbreaks_utf8(string, length, language, breaks);
-}
-
-void Accessible::FindLineSeparationsUtf8(const utf8_t* string, size_t length, const char* language, char* breaks)
-{
-  set_linebreaks_utf8(string, length, language, breaks);
-}