Changeset 78179 in webkit
- Timestamp:
- Feb 10, 2011 1:03:30 AM (13 years ago)
- Location:
- trunk/Tools
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Tools/ChangeLog
r78175 r78179 1 2011-02-10 Mario Sanchez Prada <msanchez@igalia.com> 2 3 Reviewed by Chris Fleizach. 4 5 [GTK] Add support in DRT to log "accessibility events" 6 https://bugs.webkit.org/show_bug.cgi?id=54116 7 8 Added a way to log accessibility related events, in a 9 platform-dependant way. 10 11 Add new function to AccessibilityController. 12 13 * DumpRenderTree/AccessibilityController.h: 14 * DumpRenderTree/AccessibilityController.cpp: 15 (logAccessibilityEventsCallback): New callback. 16 (AccessibilityController::getJSClass): Added new function. 17 (AccessibilityController::resetToConsistentState): Initialized 18 calling setLogAccessibilityEvents(false). 19 20 Provided implementation for the GTK port. 21 22 * DumpRenderTree/gtk/AccessibilityControllerGtk.cpp: 23 (accessibility_event_listener): Common listener for logging 24 information about all the signals emitted by any AtkObject. 25 (AccessibilityController::setLogAccessibilityEvents): Add or 26 remove listeners for signals, as specified by the parameter. 27 28 Provide dummy implementations for mac and win ports. 29 30 * DumpRenderTree/mac/AccessibilityControllerMac.mm: 31 (AccessibilityController::setLogAccessibilityEvents): 32 * DumpRenderTree/win/AccessibilityControllerWin.cpp: 33 (AccessibilityController::setLogAccessibilityEvents): 34 1 35 2011-02-09 Hayato Ito <hayato@chromium.org> 2 36 -
trunk/Tools/DumpRenderTree/AccessibilityController.cpp
r55729 r78179 78 78 } 79 79 80 static JSValueRef logAccessibilityEventsCallback(JSContextRef ctx, JSObjectRef, JSObjectRef thisObject, size_t, const JSValueRef[], JSValueRef*) 81 { 82 AccessibilityController* controller = static_cast<AccessibilityController*>(JSObjectGetPrivate(thisObject)); 83 controller->setLogAccessibilityEvents(true); 84 return JSValueMakeUndefined(ctx); 85 } 86 80 87 static JSValueRef getElementAtPointCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) 81 88 { … … 97 104 { "logValueChangeEvents", logValueChangeEventsCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, 98 105 { "logScrollingStartEvents", logScrollingStartEventsCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, 106 { "logAccessibilityEvents", logAccessibilityEventsCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, 99 107 { "elementAtPoint", getElementAtPointCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, 100 108 { 0, 0, 0 } … … 120 128 setLogValueChangeEvents(false); 121 129 setLogScrollingStartEvents(false); 130 setLogAccessibilityEvents(false); 122 131 } -
trunk/Tools/DumpRenderTree/AccessibilityController.h
r55729 r78179 51 51 void setLogValueChangeEvents(bool); 52 52 void setLogScrollingStartEvents(bool); 53 void setLogAccessibilityEvents(bool); 53 54 54 55 void resetToConsistentState(); -
trunk/Tools/DumpRenderTree/gtk/AccessibilityControllerGtk.cpp
r75072 r78179 35 35 #include <gtk/gtk.h> 36 36 #include <webkit/webkit.h> 37 38 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; 37 46 38 47 AccessibilityController::AccessibilityController() … … 80 89 } 81 90 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 else 132 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 void AccessibilityController::setLogAccessibilityEvents(bool logAccessibilityEvents) 142 { 143 if (logAccessibilityEvents == loggingAccessibilityEvents) 144 return; 145 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 if (!logAccessibilityEvents) { 172 loggingAccessibilityEvents = false; 173 return; 174 } 175 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 188 loggingAccessibilityEvents = true; 189 } 190 82 191 void AccessibilityController::addNotificationListener(PlatformUIElement, JSObjectRef) 83 192 { -
trunk/Tools/DumpRenderTree/mac/AccessibilityControllerMac.mm
r75031 r78179 75 75 } 76 76 77 void AccessibilityController::setLogAccessibilityEvents(bool) 78 { 79 } 80 77 81 void AccessibilityController::addNotificationListener(PlatformUIElement, JSObjectRef) 78 82 { -
trunk/Tools/DumpRenderTree/win/AccessibilityControllerWin.cpp
r68907 r78179 214 214 } 215 215 216 void AccessibilityController::setLogAccessibilityEvents(bool) 217 { 218 } 219 216 220 static string stringEvent(DWORD event) 217 221 {
Note: See TracChangeset
for help on using the changeset viewer.