Merge "Add a callback for navigation policy in web engine." into devel/master
[platform/core/uifw/dali-adaptor.git] / dali / internal / accessibility / bridge / accessible.cpp
index fb75de8..dc0fca2 100644 (file)
 // CLASS HEADER
 
 //INTERNAL INCLUDES
+#include <dali/devel-api/atspi-interfaces/accessible.h>
+#include <dali/devel-api/atspi-interfaces/action.h>
+#include <dali/devel-api/atspi-interfaces/application.h>
+#include <dali/devel-api/atspi-interfaces/collection.h>
+#include <dali/devel-api/atspi-interfaces/component.h>
+#include <dali/devel-api/atspi-interfaces/editable-text.h>
+#include <dali/devel-api/atspi-interfaces/hyperlink.h>
+#include <dali/devel-api/atspi-interfaces/hypertext.h>
+#include <dali/devel-api/atspi-interfaces/selection.h>
+#include <dali/devel-api/atspi-interfaces/text.h>
+#include <dali/devel-api/atspi-interfaces/value.h>
+#include <dali/devel-api/adaptor-framework/accessibility-bridge.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> Accessible::GetInterfaces() const
 {
   std::vector<std::string> tmp;
   tmp.push_back(AtspiDbusInterfaceAccessible);
-  if(dynamic_cast<Collection*>(this))
+  if(dynamic_cast<const Collection*>(this))
   {
     tmp.push_back(AtspiDbusInterfaceCollection);
   }
-  if(dynamic_cast<Text*>(this))
+  if(dynamic_cast<const Text*>(this))
   {
     tmp.push_back(AtspiDbusInterfaceText);
   }
-  if(dynamic_cast<EditableText*>(this))
+  if(dynamic_cast<const EditableText*>(this))
   {
     tmp.push_back(AtspiDbusInterfaceEditableText);
   }
-  if(dynamic_cast<Value*>(this))
+  if(dynamic_cast<const Value*>(this))
   {
     tmp.push_back(AtspiDbusInterfaceValue);
   }
-  if(dynamic_cast<Component*>(this))
+  if(dynamic_cast<const Component*>(this))
   {
     tmp.push_back(AtspiDbusInterfaceComponent);
   }
-  if(auto action = dynamic_cast<Action*>(this))
+  if(auto action = dynamic_cast<const Action*>(this))
   {
     if(action->GetActionCount() > 0)
     {
       tmp.push_back(AtspiDbusInterfaceAction);
     }
   }
-  if(dynamic_cast<Selection*>(this))
+  if(dynamic_cast<const Selection*>(this))
   {
     tmp.push_back(AtspiDbusInterfaceSelection);
   }
+  if(dynamic_cast<const Hypertext*>(this))
+  {
+    tmp.push_back(AtspiDbusInterfaceHypertext);
+  }
+  if(dynamic_cast<const Hyperlink*>(this))
+  {
+    tmp.push_back(AtspiDbusInterfaceHyperlink);
+  }
   return tmp;
 }
 
@@ -66,7 +86,7 @@ Accessible::Accessible()
 {
 }
 
-Accessible::~Accessible()
+Accessible::~Accessible() noexcept
 {
   auto handle = mBridgeData.lock();
   if(handle)
@@ -143,6 +163,15 @@ 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::Emit(WindowEvent event, unsigned int detail)
 {
   if(auto bridgeData = GetBridgeData())
@@ -166,28 +195,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 +222,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 +233,26 @@ void Bridge::RegisterOnBridge(Accessible* object)
   }
 }
 
-bool Accessible::IsProxy()
+bool Accessible::IsHidden() const
 {
   return false;
 }
 
-Accessible* Accessible::GetDefaultLabel()
+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);
       }
     }