Blame modules/other/gail/tests/testtext.c

Packit Service fb6fa5
#include <atk/atk.h>
Packit Service fb6fa5
#include "testtextlib.h"
Packit Service fb6fa5
Packit Service fb6fa5
#define NUM_VALID_ROLES 6  
Packit Service fb6fa5
Packit Service fb6fa5
static void _create_event_watcher (void);
Packit Service fb6fa5
static void _check_text (AtkObject *obj);
Packit Service fb6fa5
void runtest(AtkObject *, gint);
Packit Service fb6fa5
Packit Service fb6fa5
static guint id1 = 0;
Packit Service fb6fa5
static guint win_count = 0;
Packit Service fb6fa5
Packit Service fb6fa5
static void _check_text (AtkObject *in_obj)
Packit Service fb6fa5
{
Packit Service fb6fa5
  AtkObject *obj = NULL;
Packit Service fb6fa5
  AtkRole role;
Packit Service fb6fa5
  gchar* title;
Packit Service fb6fa5
  AtkRole valid_roles[NUM_VALID_ROLES];
Packit Service fb6fa5
Packit Service fb6fa5
  if (g_getenv("TEST_ACCESSIBLE_DELAY") != NULL)
Packit Service fb6fa5
  {
Packit Service fb6fa5
    int max_cnt = string_to_int(g_getenv("TEST_ACCESSIBLE_DELAY"));
Packit Service fb6fa5
    win_count++;
Packit Service fb6fa5
    if (win_count <= max_cnt)
Packit Service fb6fa5
      return;
Packit Service fb6fa5
  }
Packit Service fb6fa5
Packit Service fb6fa5
  /* Set Up */
Packit Service fb6fa5
Packit Service fb6fa5
  valid_roles[0] = ATK_ROLE_TEXT;
Packit Service fb6fa5
  valid_roles[1] = ATK_ROLE_LABEL;
Packit Service fb6fa5
  valid_roles[2] = ATK_ROLE_ACCEL_LABEL;
Packit Service fb6fa5
  valid_roles[3] = ATK_ROLE_PASSWORD_TEXT;
Packit Service fb6fa5
  valid_roles[4] = ATK_ROLE_TABLE_CELL;
Packit Service fb6fa5
  valid_roles[5] = ATK_ROLE_PANEL;
Packit Service fb6fa5
  
Packit Service fb6fa5
  /* The following if/else grabs the windows name, or sets title to NULL if none. */
Packit Service fb6fa5
  if (in_obj->name)
Packit Service fb6fa5
  {
Packit Service fb6fa5
     title = in_obj->name;
Packit Service fb6fa5
  }
Packit Service fb6fa5
  else
Packit Service fb6fa5
  {
Packit Service fb6fa5
    GtkWidget *toplevel;
Packit Service fb6fa5
    GtkWidget* widget = GTK_ACCESSIBLE (in_obj)->widget;
Packit Service fb6fa5
Packit Service fb6fa5
    if (widget == NULL)
Packit Service fb6fa5
    {
Packit Service fb6fa5
      title = NULL;
Packit Service fb6fa5
    }
Packit Service fb6fa5
Packit Service fb6fa5
    toplevel = gtk_widget_get_toplevel (widget);
Packit Service fb6fa5
    if (GTK_IS_WINDOW (toplevel) && GTK_WINDOW (toplevel)->title)
Packit Service fb6fa5
    {
Packit Service fb6fa5
      title = GTK_WINDOW (toplevel)->title;
Packit Service fb6fa5
    }
Packit Service fb6fa5
    else
Packit Service fb6fa5
      title = NULL;
Packit Service fb6fa5
  }
Packit Service fb6fa5
  /* If no window name, do nothing */
Packit Service fb6fa5
  if (title == NULL) 
Packit Service fb6fa5
    return;
Packit Service fb6fa5
  /* 
Packit Service fb6fa5
   * If testtext test program, find obj just by role since only one child 
Packit Service fb6fa5
   * with no name
Packit Service fb6fa5
   */
Packit Service fb6fa5
  else if (g_ascii_strncasecmp(title, "testtext", 7) == 0) 
Packit Service fb6fa5
  {
Packit Service fb6fa5
    obj = find_object_by_role(in_obj, valid_roles, NUM_VALID_ROLES);
Packit Service fb6fa5
  }
Packit Service fb6fa5
  /*
Packit Service fb6fa5
   * Otherwise, get obj by name and role so you can specify exactly which 
Packit Service fb6fa5
   * obj to run tests on 
Packit Service fb6fa5
   */
Packit Service fb6fa5
  else 
Packit Service fb6fa5
  {
Packit Service fb6fa5
    const gchar *test_accessible_name = g_getenv ("TEST_ACCESSIBLE_NAME");
Packit Service fb6fa5
Packit Service fb6fa5
    if (test_accessible_name != NULL)
Packit Service fb6fa5
    {
Packit Service fb6fa5
      obj = find_object_by_accessible_name_and_role(in_obj,
Packit Service fb6fa5
        test_accessible_name, valid_roles, NUM_VALID_ROLES);
Packit Service fb6fa5
    }
Packit Service fb6fa5
    if (obj != NULL)
Packit Service fb6fa5
    {
Packit Service fb6fa5
      if (atk_object_get_role (obj) == ATK_ROLE_PANEL)
Packit Service fb6fa5
      {
Packit Service fb6fa5
        /* Get the child and check whether it is a label */
Packit Service fb6fa5
Packit Service fb6fa5
        obj = atk_object_ref_accessible_child (obj, 0);
Packit Service fb6fa5
        g_assert (atk_object_get_role (obj) == ATK_ROLE_LABEL);
Packit Service fb6fa5
        g_object_unref (obj);
Packit Service fb6fa5
      }
Packit Service fb6fa5
       g_print("Found valid name and role in child!\n");
Packit Service fb6fa5
    }
Packit Service fb6fa5
    else
Packit Service fb6fa5
    {
Packit Service fb6fa5
       obj = find_object_by_role(in_obj, valid_roles, NUM_VALID_ROLES - 1);
Packit Service fb6fa5
       if (obj != NULL)
Packit Service fb6fa5
          g_print("Found valid role in child\n");
Packit Service fb6fa5
    }   
Packit Service fb6fa5
  } 
Packit Service fb6fa5
  if (obj == NULL)
Packit Service fb6fa5
  {
Packit Service fb6fa5
     g_print("Object not found\n");
Packit Service fb6fa5
     return;
Packit Service fb6fa5
  }
Packit Service fb6fa5
  role = atk_object_get_role(obj);
Packit Service fb6fa5
Packit Service fb6fa5
  g_print("_check_text - Found role type %s!\n\n", atk_role_get_name (role));
Packit Service fb6fa5
Packit Service fb6fa5
  add_handlers(obj);
Packit Service fb6fa5
Packit Service fb6fa5
  if (!(isVisibleDialog()))
Packit Service fb6fa5
    setup_gui(obj, runtest);
Packit Service fb6fa5
  atk_remove_focus_tracker (id1);
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static void
Packit Service fb6fa5
_create_event_watcher (void)
Packit Service fb6fa5
{
Packit Service fb6fa5
  id1 = atk_add_focus_tracker (_check_text);
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
int
Packit Service fb6fa5
gtk_module_init(gint argc, char* argv[])
Packit Service fb6fa5
{
Packit Service fb6fa5
  g_print("testtext Module loaded.\n");
Packit Service fb6fa5
  _create_event_watcher();
Packit Service fb6fa5
Packit Service fb6fa5
  return 0;
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5