Changeset 82095 in webkit


Ignore:
Timestamp:
Mar 28, 2011 3:16:38 AM (13 years ago)
Author:
mario@webkit.org
Message:

2011-03-26 Mario Sanchez Prada <msanchez@igalia.com>

Reviewed by Martin Robinson.

[GTK] Expose the AtkValue interface for WAI-ARIA sliders
https://bugs.webkit.org/show_bug.cgi?id=56655

New test to check WAI-ARIA sliders required attributes.

  • platform/gtk/accessibility/aria-slider-required-attributes-expected.txt: Added.
  • platform/gtk/accessibility/aria-slider-required-attributes.html: Added.

2011-03-26 Mario Sanchez Prada <msanchez@igalia.com>

Reviewed by Martin Robinson.

[GTK] Expose the AtkValue interface for WAI-ARIA sliders
https://bugs.webkit.org/show_bug.cgi?id=56655

Implement AtkValue interface for WAI-ARIA sliders.

Test: platform/gtk/accessibility/aria-slider-required-attributes.html

  • accessibility/gtk/AXObjectCacheAtk.cpp: (WebCore::AXObjectCache::postPlatformNotification): Emit the 'property-change::accessible-value' signal when needed.
  • accessibility/gtk/AccessibilityObjectWrapperAtk.cpp: (core): New, returns a core object from an AtkValue. (webkitAccessibleValueGetCurrentValue): New, implements AtkValue. (webkitAccessibleValueGetMaximumValue): Ditto. (webkitAccessibleValueGetMinimumValue): Ditto. (webkitAccessibleValueSetCurrentValue): Ditto. (webkitAccessibleValueGetMinimumIncrement): Ditto. (atkValueInterfaceInit): Ditto. (GetAtkInterfaceTypeFromWAIType): Add ATK_TYPE_VALUE. (getInterfaceMaskFromObject): Set the WAI_VALUE bit for sliders.
Location:
trunk
Files:
2 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r82094 r82095  
     12011-03-26  Mario Sanchez Prada  <msanchez@igalia.com>
     2
     3        Reviewed by Martin Robinson.
     4
     5        [GTK] Expose the AtkValue interface for WAI-ARIA sliders
     6        https://bugs.webkit.org/show_bug.cgi?id=56655
     7
     8        New test to check WAI-ARIA sliders required attributes.
     9
     10        * platform/gtk/accessibility/aria-slider-required-attributes-expected.txt: Added.
     11        * platform/gtk/accessibility/aria-slider-required-attributes.html: Added.
     12
    1132011-03-28  Sergio Villar Senin  <svillar@igalia.com>
    214
  • trunk/Source/WebCore/ChangeLog

    r82093 r82095  
     12011-03-26  Mario Sanchez Prada  <msanchez@igalia.com>
     2
     3        Reviewed by Martin Robinson.
     4
     5        [GTK] Expose the AtkValue interface for WAI-ARIA sliders
     6        https://bugs.webkit.org/show_bug.cgi?id=56655
     7
     8        Implement AtkValue interface for WAI-ARIA sliders.
     9
     10        Test: platform/gtk/accessibility/aria-slider-required-attributes.html
     11
     12        * accessibility/gtk/AXObjectCacheAtk.cpp:
     13        (WebCore::AXObjectCache::postPlatformNotification): Emit the
     14        'property-change::accessible-value' signal when needed.
     15
     16        * accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:
     17        (core): New, returns a core object from an AtkValue.
     18        (webkitAccessibleValueGetCurrentValue): New, implements AtkValue.
     19        (webkitAccessibleValueGetMaximumValue): Ditto.
     20        (webkitAccessibleValueGetMinimumValue): Ditto.
     21        (webkitAccessibleValueSetCurrentValue): Ditto.
     22        (webkitAccessibleValueGetMinimumIncrement): Ditto.
     23        (atkValueInterfaceInit): Ditto.
     24        (GetAtkInterfaceTypeFromWAIType): Add ATK_TYPE_VALUE.
     25        (getInterfaceMaskFromObject): Set the WAI_VALUE bit for sliders.
     26
    1272011-03-28  Maciej Stachowiak  <mjs@apple.com>
    228
  • trunk/Source/WebCore/accessibility/gtk/AXObjectCacheAtk.cpp

    r80214 r82095  
    144144        }
    145145        notifyChildrenSelectionChange(coreObject);
     146    } else if (notification == AXValueChanged) {
     147        if (!ATK_IS_VALUE(axObject))
     148            return;
     149
     150        AtkPropertyValues propertyValues;
     151        propertyValues.property_name = "accessible-value";
     152
     153        memset(&propertyValues.new_value,  0, sizeof(GValue));
     154        atk_value_get_current_value(ATK_VALUE(axObject), &propertyValues.new_value);
     155
     156        g_signal_emit_by_name(ATK_OBJECT(axObject), "property-change::accessible-value", &propertyValues, NULL);
    146157    }
    147158}
  • trunk/Source/WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp

    r80059 r82095  
    157157{
    158158    return core(ATK_OBJECT(document));
     159}
     160
     161static AccessibilityObject* core(AtkValue* value)
     162{
     163    return core(ATK_OBJECT(value));
    159164}
    160165
     
    23022307}
    23032308
     2309
     2310static void webkitAccessibleValueGetCurrentValue(AtkValue* value, GValue* gValue)
     2311{
     2312    memset(gValue,  0, sizeof(GValue));
     2313    g_value_init(gValue, G_TYPE_DOUBLE);
     2314    g_value_set_double(gValue, core(value)->valueForRange());
     2315}
     2316
     2317static void webkitAccessibleValueGetMaximumValue(AtkValue* value, GValue* gValue)
     2318{
     2319    memset(gValue,  0, sizeof(GValue));
     2320    g_value_init(gValue, G_TYPE_DOUBLE);
     2321    g_value_set_double(gValue, core(value)->maxValueForRange());
     2322}
     2323
     2324static void webkitAccessibleValueGetMinimumValue(AtkValue* value, GValue* gValue)
     2325{
     2326    memset(gValue,  0, sizeof(GValue));
     2327    g_value_init(gValue, G_TYPE_DOUBLE);
     2328    g_value_set_double(gValue, core(value)->minValueForRange());
     2329}
     2330
     2331static gboolean webkitAccessibleValueSetCurrentValue(AtkValue* value, const GValue* gValue)
     2332{
     2333    if (!G_VALUE_HOLDS_DOUBLE(gValue) && !G_VALUE_HOLDS_INT(gValue))
     2334        return FALSE;
     2335
     2336    AccessibilityObject* coreObject = core(value);
     2337    if (!coreObject->canSetValueAttribute())
     2338        return FALSE;
     2339
     2340    if (G_VALUE_HOLDS_DOUBLE(gValue))
     2341        coreObject->setValue(String::number(g_value_get_double(gValue)));
     2342    else
     2343        coreObject->setValue(String::number(g_value_get_int(gValue)));
     2344
     2345    return TRUE;
     2346}
     2347
     2348static void webkitAccessibleValueGetMinimumIncrement(AtkValue* value, GValue* gValue)
     2349{
     2350    memset(gValue,  0, sizeof(GValue));
     2351    g_value_init(gValue, G_TYPE_DOUBLE);
     2352
     2353    // There's not such a thing in the WAI-ARIA specification, thus return zero.
     2354    g_value_set_double(gValue, 0.0);
     2355}
     2356
     2357static void atkValueInterfaceInit(AtkValueIface* iface)
     2358{
     2359    iface->get_current_value = webkitAccessibleValueGetCurrentValue;
     2360    iface->get_maximum_value = webkitAccessibleValueGetMaximumValue;
     2361    iface->get_minimum_value = webkitAccessibleValueGetMinimumValue;
     2362    iface->set_current_value = webkitAccessibleValueSetCurrentValue;
     2363    iface->get_minimum_increment = webkitAccessibleValueGetMinimumIncrement;
     2364}
     2365
    23042366static const GInterfaceInfo AtkInterfacesInitFunctions[] = {
    23052367    {(GInterfaceInitFunc)atk_action_interface_init,
     
    23222384     (GInterfaceFinalizeFunc) 0, 0},
    23232385    {(GInterfaceInitFunc)atk_document_interface_init,
     2386     (GInterfaceFinalizeFunc) 0, 0},
     2387    {(GInterfaceInitFunc)atkValueInterfaceInit,
    23242388     (GInterfaceFinalizeFunc) 0, 0}
    23252389};
     
    23352399    WAI_HYPERTEXT,
    23362400    WAI_HYPERLINK,
    2337     WAI_DOCUMENT
     2401    WAI_DOCUMENT,
     2402    WAI_VALUE,
    23382403};
    23392404
     
    23612426    case WAI_DOCUMENT:
    23622427        return ATK_TYPE_DOCUMENT;
     2428    case WAI_VALUE:
     2429        return ATK_TYPE_VALUE;
    23632430    }
    23642431
     
    24322499        interfaceMask |= 1 << WAI_DOCUMENT;
    24332500
     2501    // Value
     2502    if (role == SliderRole)
     2503        interfaceMask |= 1 << WAI_VALUE;
     2504
    24342505    return interfaceMask;
    24352506}
Note: See TracChangeset for help on using the changeset viewer.