+2012-01-20 Mario Sanchez Prada <msanchez@igalia.com>
+
+ [GTK] GTK's DRT not to log events for already defunct objects
+ https://bugs.webkit.org/show_bug.cgi?id=76620
+
+ Reviewed by Martin Robinson.
+
+ Do not log 'state-change:defunct' events.
+
+ * DumpRenderTree/gtk/AccessibilityCallbacks.cpp:
+ (printAccessibilityEvent): Early return if a
+ 'state-change:defunct' signal is passed.
+ (axObjectEventListener): Pass the signal name and value in
+ separate parameters to printAccessibilityEvent.
+
2012-01-19 Gustavo Noronha Silva <gns@gnome.org>
Unreviewed build fix. Wrong variable being used as the cwd for git
static guint propertyChangedListenerId = 0;
static guint visibleDataChangedListenerId = 0;
-static void printAccessibilityEvent(AtkObject* accessible, const gchar* signalName)
+static void printAccessibilityEvent(AtkObject* accessible, const gchar* signalName, const gchar* signalValue)
{
- // Sanity check.
- if (!accessible || !ATK_IS_OBJECT(accessible) || !signalName)
+ // Do not handle state-change:defunct signals, as the AtkObject
+ // associated to them will not be valid at this point already.
+ if (!signalName || !g_strcmp0(signalName, "state-change:defunct"))
+ return;
+
+ if (!accessible || !ATK_IS_OBJECT(accessible))
return;
const gchar* objectName = atk_object_get_name(accessible);
- guint objectRole = atk_object_get_role(accessible);
+ AtkRole objectRole = atk_object_get_role(accessible);
// Try to always provide a name to be logged for the object.
if (!objectName || *objectName == '\0')
objectName = "(No name)";
+ GOwnPtr<gchar> signalNameAndValue(signalValue ? g_strdup_printf("%s = %s", signalName, signalValue) : g_strdup(signalName));
printf("Accessibility object emitted \"%s\" / Name: \"%s\" / Role: %d\n",
- signalName, objectName, objectRole);
+ signalNameAndValue.get(), objectName, objectRole);
}
static gboolean axObjectEventListener(GSignalInvocationHint *signalHint,
GSignalQuery signal_query;
GOwnPtr<gchar> signalName;
+ GOwnPtr<gchar> signalValue;
g_signal_query(signalHint->signal_id, &signal_query);
if (!g_strcmp0(signal_query.signal_name, "state-change")) {
- signalName.set(g_strdup_printf("state-change:%s = %d",
- g_value_get_string(¶mValues[1]),
- g_value_get_boolean(¶mValues[2])));
+ signalName.set(g_strdup_printf("state-change:%s", g_value_get_string(¶mValues[1])));
+ signalValue.set(g_strdup_printf("%d", g_value_get_boolean(¶mValues[2])));
} else if (!g_strcmp0(signal_query.signal_name, "focus-event")) {
- signalName.set(g_strdup_printf("focus-event = %d",
- g_value_get_boolean(¶mValues[1])));
+ signalName.set(g_strdup("focus-event"));
+ signalValue.set(g_strdup_printf("%d", g_value_get_boolean(¶mValues[1])));
} else if (!g_strcmp0(signal_query.signal_name, "children-changed")) {
- signalName.set(g_strdup_printf("children-changed = %d",
- g_value_get_uint(¶mValues[1])));
+ signalName.set(g_strdup("children-changed"));
+ signalValue.set(g_strdup_printf("%d", g_value_get_uint(¶mValues[1])));
} else if (!g_strcmp0(signal_query.signal_name, "property-change")) {
- signalName.set(g_strdup_printf("property-change:%s",
- g_quark_to_string(signalHint->detail)));
+ signalName.set(g_strdup_printf("property-change:%s", g_quark_to_string(signalHint->detail)));
} else
signalName.set(g_strdup(signal_query.signal_name));
- printAccessibilityEvent(accessible, signalName.get());
+ printAccessibilityEvent(accessible, signalName.get(), signalValue.get());
return TRUE;
}