Onscreen ATSPI support 62/316962/4 submit/tizen/20241226.160018
authorsidpaswan <s.paswan@samsung.com>
Fri, 20 Dec 2024 10:39:47 +0000 (16:09 +0530)
committersidpaswan <s.paswan@samsung.com>
Mon, 23 Dec 2024 08:40:47 +0000 (14:10 +0530)
Support ATSPI for Onscreen mode without using elm_window.

Change-Id: Ic1e020c2c237fd706d7a6ad51ad738e8b41f26cc
Signed-off-by: sidpaswan <s.paswan@samsung.com>
tizen_src/ewk/efl_integration/eweb_accessibility.cc
tizen_src/ewk/efl_integration/eweb_accessibility.h
tizen_src/ewk/efl_integration/eweb_accessibility_util.cc

index cf3f43aec030909f3e2861730d634cf3c7313160..6bfe8d7c3143b6abacbc1c65f4e44496901d3367 100644 (file)
@@ -36,6 +36,13 @@ AtkObject* EWebAccessibility::GetRootObject() {
   return ATK_OBJECT(accessibility_object_->GetEflAtkObject());
 }
 
+AtkObject* EWebAccessibility::GetRefChild(gint index) {
+  if (!accessibility_object_) {
+    accessibility_object_.reset(new EWebAccessibilityObject(web_contents_));
+  }
+  return ATK_OBJECT(accessibility_object_->RefChild(index));
+}
+
 void EWebAccessibility::OnFocusOut() {
   if (!(IsMobileProfile() || IsTvProfile()))
     return;
index 7d5b81272229e0a305be599cdd8b0446e41a0dee..524d30242bf1ce05bc4e73b84ac63565b26d2b42 100644 (file)
@@ -38,6 +38,7 @@ class EWebAccessibility {
 
   void NotifyAccessibilityStatus(bool);
   AtkObject* GetRootObject();
+  AtkObject* GetRefChild(gint index);
   void OnFocusOut();
 
  private:
index 5ee507952b1d4f3f4abf20e4e9855082c73c9e20..03c2ca10d5b6e8f383c4f4cae51c1f682cdec464 100644 (file)
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 #include "eweb_accessibility_util.h"
+#include "eweb_accessibility_object.h"
 
 #include <atk-bridge.h>
 #include <atk/atk.h>
@@ -16,6 +17,8 @@
 
 #include <vconf.h>
 
+static const char* const kEwebAccessibilityRootObjectName = "eweb accessibility";
+
 using web_contents_utils::WebViewFromWebContents;
 
 G_BEGIN_DECLS
@@ -75,8 +78,37 @@ static void eweb_accessibility_root_init(
       eweb_accessibility_root_get_instance_private(accessible_root));
 }
 
+static gint eweb_accessibility_root_get_index_in_parent(
+    AtkObject* atk_object) {
+  g_return_val_if_fail(IS_EWEB_ACCESSIBILITY_ROOT(atk_object), -1);
+  return 0;
+}
+
+static gint eweb_accessibility_root_get_n_children(
+    AtkObject* atk_object) {
+  g_return_val_if_fail(IS_EWEB_ACCESSIBILITY_ROOT(atk_object), -1);
+  return eweb_accessibility_ ? 1 : 0;
+}
+
+static AtkObject* eweb_accessibility_root_ref_child(AtkObject* atk_object,
+                                                          gint index) {
+  g_return_val_if_fail(IS_EWEB_ACCESSIBILITY_ROOT(atk_object), nullptr);
+  return eweb_accessibility_ ? eweb_accessibility_->GetRefChild(index) : nullptr;
+}
+
+static const gchar* eweb_accessibility_root_get_name(
+    AtkObject* atk_object) {
+  return kEwebAccessibilityRootObjectName;
+}
+
 static void eweb_accessibility_root_class_init(
-    EWebAccessibilityRootClass* klass) {}
+    EWebAccessibilityRootClass* klass) {
+  AtkObjectClass* atkObjectClass = ATK_OBJECT_CLASS(klass);
+  atkObjectClass->get_index_in_parent = eweb_accessibility_root_get_index_in_parent;
+  atkObjectClass->get_n_children = eweb_accessibility_root_get_n_children;
+  atkObjectClass->ref_child = eweb_accessibility_root_ref_child;
+  atkObjectClass->get_name = eweb_accessibility_root_get_name;
+}
 
 static AtkObject* eweb_util_get_root() {
   if (!IsMobileProfile())