Changeset 78244 in webkit
- Timestamp:
- Feb 10, 2011 10:42:18 AM (13 years ago)
- Location:
- trunk/Tools
- Files:
-
- 2 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Tools/ChangeLog
r78228 r78244 1 2011-02-10 Mario Sanchez Prada <msanchez@igalia.com> 2 3 Reviewed by Martin Robinson. 4 5 [GTK] Log signals from AtkDocument interface also in AccessibilityController 6 https://bugs.webkit.org/show_bug.cgi?id=54198 7 8 Trace AtkDocument's signals emission through AccessibilityController. 9 10 Also, taken the code related to adding and removing global 11 listeners for ATK signals out to a separate file, for the sake of 12 clarity and to ease future additions. 13 14 * DumpRenderTree/gtk/AccessibilityCallbacks.h: Added. 15 * DumpRenderTree/gtk/AccessibilityCallbacks.cpp: Added 16 (printAccessibilityEvent): Print information about an event. 17 (axObjectEventListener): Global listener for AtkObject's signals. 18 (axDocumentEventListener): Global listener for AtkDocument's signals. 19 (connectAccessibilityCallbacks): Connect all global listeners. 20 (disconnectAccessibilityCallbacks): Disconnect all global listeners. 21 22 * DumpRenderTree/gtk/AccessibilityControllerGtk.cpp: 23 (AccessibilityController::setLogAccessibilityEvents): Call to 24 connectAccessibilityCallbacks and disconnectAccessibilityCallbacks. 25 26 * GNUmakefile.am: Added new files. 27 1 28 2011-02-09 Martin Robinson <mrobinson@igalia.com> 2 29 -
trunk/Tools/DumpRenderTree/gtk/AccessibilityControllerGtk.cpp
r78179 r78244 28 28 #include "AccessibilityController.h" 29 29 30 #include "AccessibilityCallbacks.h" 30 31 #include "AccessibilityUIElement.h" 31 32 #include "DumpRenderTree.h" … … 37 38 38 39 static bool loggingAccessibilityEvents = false; 39 40 static guint state_change_listener_id = 0;41 static guint focus_event_listener_id = 0;42 static guint active_descendant_changed_listener_id = 0;43 static guint children_changed_listener_id = 0;44 static guint property_changed_listener_id = 0;45 static guint visible_data_changed_listener_id = 0;46 40 47 41 AccessibilityController::AccessibilityController() … … 89 83 } 90 84 91 static gboolean accessibility_event_listener(GSignalInvocationHint *signal_hint,92 guint n_param_values,93 const GValue *param_values,94 gpointer data)95 {96 // At least we should receive the instance emitting the signal.97 if (n_param_values < 1)98 return TRUE;99 100 AtkObject* accessible = ATK_OBJECT(g_value_get_object(¶m_values[0]));101 const gchar* axObjectName = 0;102 guint axObjectRole = 0;103 if (accessible) {104 axObjectName = atk_object_get_name(accessible);105 axObjectRole = atk_object_get_role(accessible);106 }107 108 GSignalQuery signal_query;109 gchar* signalName = 0;110 111 g_signal_query(signal_hint->signal_id, &signal_query);112 113 if (!g_strcmp0(signal_query.signal_name, "state-change")) {114 signalName = g_strdup_printf("state-change:%s = %d",115 g_value_get_string(¶m_values[1]),116 g_value_get_boolean(¶m_values[2]));117 } else if (!g_strcmp0(signal_query.signal_name, "focus-event")) {118 signalName = g_strdup_printf("focus-event = %d",119 g_value_get_boolean(¶m_values[1]));120 } else if (!g_strcmp0(signal_query.signal_name, "children-changed")) {121 signalName = g_strdup_printf("children-changed = %d",122 g_value_get_uint(¶m_values[1]));123 } else {124 signalName = g_strdup(signal_query.signal_name);125 }126 127 // Try to provide always a name to be logged for the object.128 gchar* objectName = 0;129 if (!axObjectName || *axObjectName == '\0')130 objectName = g_strdup("(No name)");131 else132 objectName = g_strdup(axObjectName);133 134 printf("Accessibility object emitted \"%s\" / Name: \"%s\" / Role: %d\n", signalName, objectName, axObjectRole);135 g_free(signalName);136 g_free(objectName);137 138 return TRUE;139 }140 141 85 void AccessibilityController::setLogAccessibilityEvents(bool logAccessibilityEvents) 142 86 { … … 144 88 return; 145 89 146 if (state_change_listener_id) {147 atk_remove_global_event_listener(state_change_listener_id);148 state_change_listener_id = 0;149 }150 if (focus_event_listener_id) {151 atk_remove_global_event_listener(focus_event_listener_id);152 focus_event_listener_id = 0;153 }154 if (active_descendant_changed_listener_id) {155 atk_remove_global_event_listener(active_descendant_changed_listener_id);156 active_descendant_changed_listener_id = 0;157 }158 if (children_changed_listener_id) {159 atk_remove_global_event_listener(children_changed_listener_id);160 children_changed_listener_id = 0;161 }162 if (property_changed_listener_id) {163 atk_remove_global_event_listener(property_changed_listener_id);164 property_changed_listener_id = 0;165 }166 if (visible_data_changed_listener_id) {167 atk_remove_global_event_listener(visible_data_changed_listener_id);168 visible_data_changed_listener_id = 0;169 }170 171 90 if (!logAccessibilityEvents) { 91 disconnectAccessibilityCallbacks(); 172 92 loggingAccessibilityEvents = false; 173 93 return; 174 94 } 175 95 176 // Ensure that accessibility is initialized for the WebView by querying for 177 // the root accessible object. 178 rootElement(); 179 180 // Add global listeners 181 state_change_listener_id = atk_add_global_event_listener(accessibility_event_listener, "Gtk:AtkObject:state-change"); 182 focus_event_listener_id = atk_add_global_event_listener(accessibility_event_listener, "Gtk:AtkObject:focus-event"); 183 active_descendant_changed_listener_id = atk_add_global_event_listener(accessibility_event_listener, "Gtk:AtkObject:active-descendant-changed"); 184 children_changed_listener_id = atk_add_global_event_listener(accessibility_event_listener, "Gtk:AtkObject:children-changed"); 185 property_changed_listener_id = atk_add_global_event_listener(accessibility_event_listener, "Gtk:AtkObject:property-change"); 186 visible_data_changed_listener_id = atk_add_global_event_listener(accessibility_event_listener, "Gtk:AtkObject:visible-data-changed"); 187 96 connectAccessibilityCallbacks(); 188 97 loggingAccessibilityEvents = true; 189 98 } -
trunk/Tools/GNUmakefile.am
r78186 r78244 70 70 Tools/DumpRenderTree/cairo/PixelDumpSupportCairo.cpp \ 71 71 Tools/DumpRenderTree/cairo/PixelDumpSupportCairo.h \ 72 Tools/DumpRenderTree/gtk/AccessibilityCallbacks.h \ 73 Tools/DumpRenderTree/gtk/AccessibilityCallbacks.cpp \ 72 74 Tools/DumpRenderTree/gtk/AccessibilityControllerGtk.cpp \ 73 75 Tools/DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp \
Note: See TracChangeset
for help on using the changeset viewer.