Changeset 105791 in webkit


Ignore:
Timestamp:
Jan 24, 2012 1:18:36 PM (12 years ago)
Author:
mario@webkit.org
Message:

[GTK] Refactor GTK's accessibilitity code to be more modular
https://bugs.webkit.org/show_bug.cgi?id=76783

Reviewed by Martin Robinson.

Don't expose functions for the ATK interfaces in header files.

Expose only the initialization function for each interface, and
use the generic functions from ATK interfaces where needed.

  • accessibility/gtk/WebKitAccessibleInterfaceAction.cpp:

(webkitAccessibleActionDoAction): Made this function static.
(webkitAccessibleActionGetNActions): Ditto.
(webkitAccessibleActionGetDescription): Ditto.
(webkitAccessibleActionGetKeybinding): Ditto.
(webkitAccessibleActionGetName): Ditto.
(webkitAccessibleActionInterfaceInit): Moved to the bottom.

  • accessibility/gtk/WebKitAccessibleInterfaceAction.h: Removed all

functions but the one for initializing the interface from here.

  • accessibility/gtk/WebKitAccessibleInterfaceComponent.cpp:

(webkitAccessibleComponentRefAccessibleAtPoint): Made this function static.
(webkitAccessibleComponentGetExtents): Ditto.
(webkitAccessibleComponentGrabFocus): Ditto.
(webkitAccessibleComponentInterfaceInit): Moved to the bottom.

  • accessibility/gtk/WebKitAccessibleInterfaceComponent.h: Removed all

functions but the one for initializing the interface from here.

  • accessibility/gtk/WebKitAccessibleInterfaceDocument.cpp:

(webkitAccessibleDocumentGetAttributeValue): Made this function static.
(webkitAccessibleDocumentGetAttributes): Ditto.
(webkitAccessibleDocumentGetLocale): Ditto.
(webkitAccessibleDocumentInterfaceInit): Moved to the bottom.

  • accessibility/gtk/WebKitAccessibleInterfaceDocument.h: Removed all

functions but the one for initializing the interface from here.

  • accessibility/gtk/WebKitAccessibleInterfaceEditableText.cpp:

(webkitAccessibleEditableTextSetRunAttributes): Made this function static.
(webkitAccessibleEditableTextSetTextContents): Ditto.
(webkitAccessibleEditableTextInsertText): Ditto.
(webkitAccessibleEditableTextCopyText): Ditto.
(webkitAccessibleEditableTextCutText): Ditto.
(webkitAccessibleEditableTextDeleteText): Ditto.
(webkitAccessibleEditableTextPasteText): Ditto.
(webkitAccessibleEditableTextInterfaceInit): Moved to the bottom.

  • accessibility/gtk/WebKitAccessibleInterfaceEditableText.h: Removed all

functions but the one for initializing the interface from here.

  • accessibility/gtk/WebKitAccessibleInterfaceHyperlinkImpl.cpp:

(webkitAccessibleHyperlinkImplGetHyperlink): Made this function static.
(webkitAccessibleHyperlinkImplInterfaceInit): Moved to the bottom.

  • accessibility/gtk/WebKitAccessibleInterfaceHyperlinkImpl.h: Removed all

functions but the one for initializing the interface from here.

  • accessibility/gtk/WebKitAccessibleInterfaceHypertext.cpp:

(webkitAccessibleHypertextGetLink): Made this function static.
(webkitAccessibleHypertextGetNLinks): Ditto.
(webkitAccessibleHypertextGetLinkIndex): Ditto.
(webkitAccessibleHypertextInterfaceInit): Moved to the bottom.

  • accessibility/gtk/WebKitAccessibleInterfaceHypertext.h: Removed all

functions but the one for initializing the interface from here.

  • accessibility/gtk/WebKitAccessibleInterfaceImage.cpp:

(webkitAccessibleImageGetImagePosition): Made this function static.
(webkitAccessibleImageGetImageDescription): Ditto.
(webkitAccessibleImageGetImageSize): Ditto.
(webkitAccessibleImageInterfaceInit): Moved to the bottom.

  • accessibility/gtk/WebKitAccessibleInterfaceImage.h: Removed all

functions but the one for initializing the interface from here.

  • accessibility/gtk/WebKitAccessibleInterfaceSelection.cpp:

(webkitAccessibleSelectionAddSelection): Made this function static.
(webkitAccessibleSelectionClearSelection): Ditto.
(webkitAccessibleSelectionRefSelection): Ditto.
(webkitAccessibleSelectionGetSelectionCount): Ditto.
(webkitAccessibleSelectionIsChildSelected): Ditto.
(webkitAccessibleSelectionRemoveSelection): Ditto.
(webkitAccessibleSelectionSelectAllSelection): Ditto.
(webkitAccessibleSelectionInterfaceInit): Moved to the bottom.

  • accessibility/gtk/WebKitAccessibleInterfaceSelection.h: Removed all

functions but the one for initializing the interface from here.

  • accessibility/gtk/WebKitAccessibleInterfaceTable.cpp:

(webkitAccessibleTableRefAt): Made this function static.
(webkitAccessibleTableGetIndexAt): Ditto.
(webkitAccessibleTableGetColumnAtIndex): Ditto.
(webkitAccessibleTableGetRowAtIndex): Ditto.
(webkitAccessibleTableGetNColumns): Ditto.
(webkitAccessibleTableGetNRows): Ditto.
(webkitAccessibleTableGetColumnExtentAt): Ditto.
(webkitAccessibleTableGetRowExtentAt): Ditto.
(webkitAccessibleTableGetColumnHeader): Ditto.
(webkitAccessibleTableGetRowHeader): Ditto.
(webkitAccessibleTableGetCaption): Ditto.
(webkitAccessibleTableGetColumnDescription): Ditto.
(webkitAccessibleTableGetRowDescription): Ditto.
(webkitAccessibleTableInterfaceInit): Moved to the bottom.

  • accessibility/gtk/WebKitAccessibleInterfaceTable.h: Removed all

functions but the one for initializing the interface from here.

  • accessibility/gtk/WebKitAccessibleInterfaceText.cpp:

(textForRenderer): Made this function static.
(textForObject): Ditto.
(webkitAccessibleTextGetText): Ditto.
(webkitAccessibleTextGetTextAfterOffset): Ditto.
(webkitAccessibleTextGetTextAtOffset): Ditto.
(webkitAccessibleTextGetTextBeforeOffset): Ditto.
(webkitAccessibleTextGetCharacterAtOffset): Ditto.
(webkitAccessibleTextGetCaretOffset): Ditto.
(webkitAccessibleTextGetRunAttributes): Ditto.
(webkitAccessibleTextGetDefaultAttributes): Ditto.
(webkitAccessibleTextGetCharacterExtents): Ditto.
(webkitAccessibleTextGetRangeExtents): Ditto.
(webkitAccessibleTextGetCharacterCount): Ditto.
(webkitAccessibleTextGetOffsetAtPoint): Ditto.
(webkitAccessibleTextGetNSelections): Ditto.
(webkitAccessibleTextGetSelection): Ditto.
(webkitAccessibleTextAddSelection): Ditto.
(webkitAccessibleTextSetSelection): Ditto.
(webkitAccessibleTextRemoveSelection): Ditto.
(webkitAccessibleTextSetCaretOffset): Ditto.
(webkitAccessibleTextInterfaceInit): Moved to the bottom.

  • accessibility/gtk/WebKitAccessibleInterfaceText.h: Removed all

functions but the one for initializing the interface from here.

  • accessibility/gtk/WebKitAccessibleInterfaceValue.cpp:

(webkitAccessibleValueGetCurrentValue): Made this function static.
(webkitAccessibleValueGetMaximumValue): Ditto.
(webkitAccessibleValueGetMinimumValue): Ditto.
(webkitAccessibleValueSetCurrentValue): Ditto.
(webkitAccessibleValueGetMinimumIncrement): Ditto.
(webkitAccessibleValueInterfaceInit): Moved to the bottom.

  • accessibility/gtk/WebKitAccessibleInterfaceValue.h: Removed all

functions but the one for initializing the interface from here.

  • accessibility/gtk/WebKitAccessibleWrapperAtk.cpp:

(webkitAccessibleGetName): Replace call to
webkitAccessibleTextGetText with atk_text_get_text.

Location:
trunk/Source/WebCore
Files:
24 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r105783 r105791  
     12012-01-24  Mario Sanchez Prada  <msanchez@igalia.com>
     2
     3        [GTK] Refactor GTK's accessibilitity code to be more modular
     4        https://bugs.webkit.org/show_bug.cgi?id=76783
     5
     6        Reviewed by Martin Robinson.
     7
     8        Don't expose functions for the ATK interfaces in header files.
     9
     10        Expose only the initialization function for each interface, and
     11        use the generic functions from ATK interfaces where needed.
     12
     13        * accessibility/gtk/WebKitAccessibleInterfaceAction.cpp:
     14        (webkitAccessibleActionDoAction): Made this function static.
     15        (webkitAccessibleActionGetNActions): Ditto.
     16        (webkitAccessibleActionGetDescription): Ditto.
     17        (webkitAccessibleActionGetKeybinding): Ditto.
     18        (webkitAccessibleActionGetName): Ditto.
     19        (webkitAccessibleActionInterfaceInit): Moved to the bottom.
     20        * accessibility/gtk/WebKitAccessibleInterfaceAction.h: Removed all
     21        functions but the one for initializing the interface from here.
     22
     23        * accessibility/gtk/WebKitAccessibleInterfaceComponent.cpp:
     24        (webkitAccessibleComponentRefAccessibleAtPoint): Made this function static.
     25        (webkitAccessibleComponentGetExtents): Ditto.
     26        (webkitAccessibleComponentGrabFocus): Ditto.
     27        (webkitAccessibleComponentInterfaceInit): Moved to the bottom.
     28        * accessibility/gtk/WebKitAccessibleInterfaceComponent.h: Removed all
     29        functions but the one for initializing the interface from here.
     30
     31        * accessibility/gtk/WebKitAccessibleInterfaceDocument.cpp:
     32        (webkitAccessibleDocumentGetAttributeValue): Made this function static.
     33        (webkitAccessibleDocumentGetAttributes): Ditto.
     34        (webkitAccessibleDocumentGetLocale): Ditto.
     35        (webkitAccessibleDocumentInterfaceInit): Moved to the bottom.
     36        * accessibility/gtk/WebKitAccessibleInterfaceDocument.h: Removed all
     37        functions but the one for initializing the interface from here.
     38
     39        * accessibility/gtk/WebKitAccessibleInterfaceEditableText.cpp:
     40        (webkitAccessibleEditableTextSetRunAttributes): Made this function static.
     41        (webkitAccessibleEditableTextSetTextContents): Ditto.
     42        (webkitAccessibleEditableTextInsertText): Ditto.
     43        (webkitAccessibleEditableTextCopyText): Ditto.
     44        (webkitAccessibleEditableTextCutText): Ditto.
     45        (webkitAccessibleEditableTextDeleteText): Ditto.
     46        (webkitAccessibleEditableTextPasteText): Ditto.
     47        (webkitAccessibleEditableTextInterfaceInit): Moved to the bottom.
     48        * accessibility/gtk/WebKitAccessibleInterfaceEditableText.h: Removed all
     49        functions but the one for initializing the interface from here.
     50
     51        * accessibility/gtk/WebKitAccessibleInterfaceHyperlinkImpl.cpp:
     52        (webkitAccessibleHyperlinkImplGetHyperlink): Made this function static.
     53        (webkitAccessibleHyperlinkImplInterfaceInit): Moved to the bottom.
     54        * accessibility/gtk/WebKitAccessibleInterfaceHyperlinkImpl.h: Removed all
     55        functions but the one for initializing the interface from here.
     56
     57        * accessibility/gtk/WebKitAccessibleInterfaceHypertext.cpp:
     58        (webkitAccessibleHypertextGetLink): Made this function static.
     59        (webkitAccessibleHypertextGetNLinks): Ditto.
     60        (webkitAccessibleHypertextGetLinkIndex): Ditto.
     61        (webkitAccessibleHypertextInterfaceInit): Moved to the bottom.
     62        * accessibility/gtk/WebKitAccessibleInterfaceHypertext.h: Removed all
     63        functions but the one for initializing the interface from here.
     64
     65        * accessibility/gtk/WebKitAccessibleInterfaceImage.cpp:
     66        (webkitAccessibleImageGetImagePosition): Made this function static.
     67        (webkitAccessibleImageGetImageDescription): Ditto.
     68        (webkitAccessibleImageGetImageSize): Ditto.
     69        (webkitAccessibleImageInterfaceInit): Moved to the bottom.
     70        * accessibility/gtk/WebKitAccessibleInterfaceImage.h: Removed all
     71        functions but the one for initializing the interface from here.
     72
     73        * accessibility/gtk/WebKitAccessibleInterfaceSelection.cpp:
     74        (webkitAccessibleSelectionAddSelection): Made this function static.
     75        (webkitAccessibleSelectionClearSelection): Ditto.
     76        (webkitAccessibleSelectionRefSelection): Ditto.
     77        (webkitAccessibleSelectionGetSelectionCount): Ditto.
     78        (webkitAccessibleSelectionIsChildSelected): Ditto.
     79        (webkitAccessibleSelectionRemoveSelection): Ditto.
     80        (webkitAccessibleSelectionSelectAllSelection): Ditto.
     81        (webkitAccessibleSelectionInterfaceInit): Moved to the bottom.
     82        * accessibility/gtk/WebKitAccessibleInterfaceSelection.h: Removed all
     83        functions but the one for initializing the interface from here.
     84
     85        * accessibility/gtk/WebKitAccessibleInterfaceTable.cpp:
     86        (webkitAccessibleTableRefAt): Made this function static.
     87        (webkitAccessibleTableGetIndexAt): Ditto.
     88        (webkitAccessibleTableGetColumnAtIndex): Ditto.
     89        (webkitAccessibleTableGetRowAtIndex): Ditto.
     90        (webkitAccessibleTableGetNColumns): Ditto.
     91        (webkitAccessibleTableGetNRows): Ditto.
     92        (webkitAccessibleTableGetColumnExtentAt): Ditto.
     93        (webkitAccessibleTableGetRowExtentAt): Ditto.
     94        (webkitAccessibleTableGetColumnHeader): Ditto.
     95        (webkitAccessibleTableGetRowHeader): Ditto.
     96        (webkitAccessibleTableGetCaption): Ditto.
     97        (webkitAccessibleTableGetColumnDescription): Ditto.
     98        (webkitAccessibleTableGetRowDescription): Ditto.
     99        (webkitAccessibleTableInterfaceInit): Moved to the bottom.
     100        * accessibility/gtk/WebKitAccessibleInterfaceTable.h: Removed all
     101        functions but the one for initializing the interface from here.
     102
     103        * accessibility/gtk/WebKitAccessibleInterfaceText.cpp:
     104        (textForRenderer): Made this function static.
     105        (textForObject): Ditto.
     106        (webkitAccessibleTextGetText): Ditto.
     107        (webkitAccessibleTextGetTextAfterOffset): Ditto.
     108        (webkitAccessibleTextGetTextAtOffset): Ditto.
     109        (webkitAccessibleTextGetTextBeforeOffset): Ditto.
     110        (webkitAccessibleTextGetCharacterAtOffset): Ditto.
     111        (webkitAccessibleTextGetCaretOffset): Ditto.
     112        (webkitAccessibleTextGetRunAttributes): Ditto.
     113        (webkitAccessibleTextGetDefaultAttributes): Ditto.
     114        (webkitAccessibleTextGetCharacterExtents): Ditto.
     115        (webkitAccessibleTextGetRangeExtents): Ditto.
     116        (webkitAccessibleTextGetCharacterCount): Ditto.
     117        (webkitAccessibleTextGetOffsetAtPoint): Ditto.
     118        (webkitAccessibleTextGetNSelections): Ditto.
     119        (webkitAccessibleTextGetSelection): Ditto.
     120        (webkitAccessibleTextAddSelection): Ditto.
     121        (webkitAccessibleTextSetSelection): Ditto.
     122        (webkitAccessibleTextRemoveSelection): Ditto.
     123        (webkitAccessibleTextSetCaretOffset): Ditto.
     124        (webkitAccessibleTextInterfaceInit): Moved to the bottom.
     125        * accessibility/gtk/WebKitAccessibleInterfaceText.h: Removed all
     126        functions but the one for initializing the interface from here.
     127
     128        * accessibility/gtk/WebKitAccessibleInterfaceValue.cpp:
     129        (webkitAccessibleValueGetCurrentValue): Made this function static.
     130        (webkitAccessibleValueGetMaximumValue): Ditto.
     131        (webkitAccessibleValueGetMinimumValue): Ditto.
     132        (webkitAccessibleValueSetCurrentValue): Ditto.
     133        (webkitAccessibleValueGetMinimumIncrement): Ditto.
     134        (webkitAccessibleValueInterfaceInit): Moved to the bottom.
     135        * accessibility/gtk/WebKitAccessibleInterfaceValue.h: Removed all
     136        functions but the one for initializing the interface from here.
     137
     138        * accessibility/gtk/WebKitAccessibleWrapperAtk.cpp:
     139        (webkitAccessibleGetName): Replace call to
     140        webkitAccessibleTextGetText with atk_text_get_text.
     141
    11422012-01-24  James Robinson  <jamesr@chromium.org>
    2143
  • trunk/Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceAction.cpp

    r105618 r105791  
    4747}
    4848
     49static gboolean webkitAccessibleActionDoAction(AtkAction* action, gint index)
     50{
     51    g_return_val_if_fail(!index, FALSE);
     52    return core(action)->performDefaultAction();
     53}
     54
     55static gint webkitAccessibleActionGetNActions(AtkAction*)
     56{
     57    return 1;
     58}
     59
     60static const gchar* webkitAccessibleActionGetDescription(AtkAction*, gint)
     61{
     62    // TODO: Need a way to provide/localize action descriptions.
     63    notImplemented();
     64    return "";
     65}
     66
     67static const gchar* webkitAccessibleActionGetKeybinding(AtkAction* action, gint index)
     68{
     69    g_return_val_if_fail(!index, 0);
     70    // FIXME: Construct a proper keybinding string.
     71    return returnString(core(action)->accessKey().string());
     72}
     73
     74static const gchar* webkitAccessibleActionGetName(AtkAction* action, gint index)
     75{
     76    g_return_val_if_fail(!index, 0);
     77    return returnString(core(action)->actionVerb());
     78}
     79
    4980void webkitAccessibleActionInterfaceInit(AtkActionIface* iface)
    5081{
     
    5586    iface->get_name = webkitAccessibleActionGetName;
    5687}
    57 
    58 gboolean webkitAccessibleActionDoAction(AtkAction* action, gint index)
    59 {
    60     g_return_val_if_fail(!index, FALSE);
    61     return core(action)->performDefaultAction();
    62 }
    63 
    64 gint webkitAccessibleActionGetNActions(AtkAction*)
    65 {
    66     return 1;
    67 }
    68 
    69 const gchar* webkitAccessibleActionGetDescription(AtkAction*, gint)
    70 {
    71     // TODO: Need a way to provide/localize action descriptions.
    72     notImplemented();
    73     return "";
    74 }
    75 
    76 const gchar* webkitAccessibleActionGetKeybinding(AtkAction* action, gint index)
    77 {
    78     g_return_val_if_fail(!index, 0);
    79     // FIXME: Construct a proper keybinding string.
    80     return returnString(core(action)->accessKey().string());
    81 }
    82 
    83 const gchar* webkitAccessibleActionGetName(AtkAction* action, gint index)
    84 {
    85     g_return_val_if_fail(!index, 0);
    86     return returnString(core(action)->actionVerb());
    87 }
  • trunk/Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceAction.h

    r105618 r105791  
    2626
    2727void webkitAccessibleActionInterfaceInit(AtkActionIface*);
    28 gboolean webkitAccessibleActionDoAction(AtkAction*, gint index);
    29 gint webkitAccessibleActionGetNActions(AtkAction*);
    30 const gchar* webkitAccessibleActionGetDescription(AtkAction*, gint index);
    31 const gchar* webkitAccessibleActionGetKeybinding(AtkAction*, gint index);
    32 const gchar* webkitAccessibleActionGetName(AtkAction*, gint index);
    3328
    3429#endif // WebKitAccessibleInterfaceAction_h
  • trunk/Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceComponent.cpp

    r105716 r105791  
    6565}
    6666
    67 void webkitAccessibleComponentInterfaceInit(AtkComponentIface* iface)
    68 {
    69     iface->ref_accessible_at_point = webkitAccessibleComponentRefAccessibleAtPoint;
    70     iface->get_extents = webkitAccessibleComponentGetExtents;
    71     iface->grab_focus = webkitAccessibleComponentGrabFocus;
    72 }
    73 
    74 AtkObject* webkitAccessibleComponentRefAccessibleAtPoint(AtkComponent* component, gint x, gint y, AtkCoordType coordType)
     67static AtkObject* webkitAccessibleComponentRefAccessibleAtPoint(AtkComponent* component, gint x, gint y, AtkCoordType coordType)
    7568{
    7669    IntPoint pos = atkToContents(core(component), coordType, x, y);
     
    8376}
    8477
    85 void webkitAccessibleComponentGetExtents(AtkComponent* component, gint* x, gint* y, gint* width, gint* height, AtkCoordType coordType)
     78static void webkitAccessibleComponentGetExtents(AtkComponent* component, gint* x, gint* y, gint* width, gint* height, AtkCoordType coordType)
    8679{
    8780    IntRect rect = core(component)->elementRect();
     
    8982}
    9083
    91 gboolean webkitAccessibleComponentGrabFocus(AtkComponent* component)
     84static gboolean webkitAccessibleComponentGrabFocus(AtkComponent* component)
    9285{
    9386    core(component)->setFocused(true);
    9487    return core(component)->isFocused();
    9588}
     89
     90void webkitAccessibleComponentInterfaceInit(AtkComponentIface* iface)
     91{
     92    iface->ref_accessible_at_point = webkitAccessibleComponentRefAccessibleAtPoint;
     93    iface->get_extents = webkitAccessibleComponentGetExtents;
     94    iface->grab_focus = webkitAccessibleComponentGrabFocus;
     95}
  • trunk/Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceComponent.h

    r105716 r105791  
    2626
    2727void webkitAccessibleComponentInterfaceInit(AtkComponentIface*);
    28 AtkObject* webkitAccessibleComponentRefAccessibleAtPoint(AtkComponent*, gint x, gint y, AtkCoordType);
    29 void webkitAccessibleComponentGetExtents(AtkComponent*, gint* x, gint* y, gint* width, gint* height, AtkCoordType);
    30 gboolean webkitAccessibleComponentGrabFocus(AtkComponent*);
    3128
    3229#endif // WebKitAccessibleInterfaceComponent_h
  • trunk/Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceDocument.cpp

    r105721 r105791  
    6868}
    6969
    70 void webkitAccessibleDocumentInterfaceInit(AtkDocumentIface* iface)
    71 {
    72     iface->get_document_attribute_value = webkitAccessibleDocumentGetAttributeValue;
    73     iface->get_document_attributes = webkitAccessibleDocumentGetAttributes;
    74     iface->get_document_locale = webkitAccessibleDocumentGetLocale;
    75 }
    76 
    77 const gchar* webkitAccessibleDocumentGetAttributeValue(AtkDocument* document, const gchar* attribute)
     70static const gchar* webkitAccessibleDocumentGetAttributeValue(AtkDocument* document, const gchar* attribute)
    7871{
    7972    return documentAttributeValue(document, attribute);
    8073}
    8174
    82 AtkAttributeSet* webkitAccessibleDocumentGetAttributes(AtkDocument* document)
     75static AtkAttributeSet* webkitAccessibleDocumentGetAttributes(AtkDocument* document)
    8376{
    8477    AtkAttributeSet* attributeSet = 0;
     
    9487}
    9588
    96 const gchar* webkitAccessibleDocumentGetLocale(AtkDocument* document)
     89static const gchar* webkitAccessibleDocumentGetLocale(AtkDocument* document)
    9790{
    9891    // TODO: Should we fall back on lang xml:lang when the following comes up empty?
     
    10396    return 0;
    10497}
     98
     99void webkitAccessibleDocumentInterfaceInit(AtkDocumentIface* iface)
     100{
     101    iface->get_document_attribute_value = webkitAccessibleDocumentGetAttributeValue;
     102    iface->get_document_attributes = webkitAccessibleDocumentGetAttributes;
     103    iface->get_document_locale = webkitAccessibleDocumentGetLocale;
     104}
  • trunk/Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceDocument.h

    r105721 r105791  
    2626
    2727void webkitAccessibleDocumentInterfaceInit(AtkDocumentIface*);
    28 const gchar* webkitAccessibleDocumentGetAttributeValue(AtkDocument*, const gchar*);
    29 AtkAttributeSet* webkitAccessibleDocumentGetAttributes(AtkDocument*);
    30 const gchar* webkitAccessibleDocumentGetLocale(AtkDocument*);
    3128
    3229#endif // WebKitAccessibleInterfaceDocument_h
  • trunk/Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceEditableText.cpp

    r105722 r105791  
    4848}
    4949
    50 void webkitAccessibleEditableTextInterfaceInit(AtkEditableTextIface* iface)
    51 {
    52     iface->set_run_attributes = webkitAccessibleEditableTextSetRunAttributes;
    53     iface->set_text_contents = webkitAccessibleEditableTextSetTextContents;
    54     iface->insert_text = webkitAccessibleEditableTextInsertText;
    55     iface->copy_text = webkitAccessibleEditableTextCopyText;
    56     iface->cut_text = webkitAccessibleEditableTextCutText;
    57     iface->delete_text = webkitAccessibleEditableTextDeleteText;
    58     iface->paste_text = webkitAccessibleEditableTextPasteText;
    59 }
    60 
    61 gboolean webkitAccessibleEditableTextSetRunAttributes(AtkEditableText*, AtkAttributeSet*, gint, gint)
     50static gboolean webkitAccessibleEditableTextSetRunAttributes(AtkEditableText*, AtkAttributeSet*, gint, gint)
    6251{
    6352    notImplemented();
     
    6554}
    6655
    67 void webkitAccessibleEditableTextSetTextContents(AtkEditableText* text, const gchar* string)
     56static void webkitAccessibleEditableTextSetTextContents(AtkEditableText* text, const gchar* string)
    6857{
    6958    // FIXME: string nullcheck?
     
    7160}
    7261
    73 void webkitAccessibleEditableTextInsertText(AtkEditableText* text, const gchar* string, gint length, gint* position)
     62static void webkitAccessibleEditableTextInsertText(AtkEditableText* text, const gchar* string, gint length, gint* position)
    7463{
    7564    // FIXME: string nullcheck?
     
    9180}
    9281
    93 void webkitAccessibleEditableTextCopyText(AtkEditableText*, gint, gint)
     82static void webkitAccessibleEditableTextCopyText(AtkEditableText*, gint, gint)
    9483{
    9584    notImplemented();
    9685}
    9786
    98 void webkitAccessibleEditableTextCutText(AtkEditableText*, gint, gint)
     87static void webkitAccessibleEditableTextCutText(AtkEditableText*, gint, gint)
    9988{
    10089    notImplemented();
    10190}
    10291
    103 void webkitAccessibleEditableTextDeleteText(AtkEditableText* text, gint startPos, gint endPos)
     92static void webkitAccessibleEditableTextDeleteText(AtkEditableText* text, gint startPos, gint endPos)
    10493{
    10594    AccessibilityObject* coreObject = core(text);
     
    117106}
    118107
    119 void webkitAccessibleEditableTextPasteText(AtkEditableText*, gint)
     108static void webkitAccessibleEditableTextPasteText(AtkEditableText*, gint)
    120109{
    121110    notImplemented();
    122111}
     112
     113void webkitAccessibleEditableTextInterfaceInit(AtkEditableTextIface* iface)
     114{
     115    iface->set_run_attributes = webkitAccessibleEditableTextSetRunAttributes;
     116    iface->set_text_contents = webkitAccessibleEditableTextSetTextContents;
     117    iface->insert_text = webkitAccessibleEditableTextInsertText;
     118    iface->copy_text = webkitAccessibleEditableTextCopyText;
     119    iface->cut_text = webkitAccessibleEditableTextCutText;
     120    iface->delete_text = webkitAccessibleEditableTextDeleteText;
     121    iface->paste_text = webkitAccessibleEditableTextPasteText;
     122}
  • trunk/Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceEditableText.h

    r105722 r105791  
    2626
    2727void webkitAccessibleEditableTextInterfaceInit(AtkEditableTextIface*);
    28 gboolean webkitAccessibleEditableTextSetRunAttributes(AtkEditableText*, AtkAttributeSet*, gint startOffset, gint endOffset);
    29 void webkitAccessibleEditableTextSetTextContents(AtkEditableText*, const gchar*);
    30 void webkitAccessibleEditableTextInsertText(AtkEditableText*, const gchar*, gint length, gint* position);
    31 void webkitAccessibleEditableTextCopyText(AtkEditableText*, gint startPos, gint endPos);
    32 void webkitAccessibleEditableTextCutText(AtkEditableText*, gint startPos, gint endPos);
    33 void webkitAccessibleEditableTextDeleteText(AtkEditableText*, gint startPos, gint endPos);
    34 void webkitAccessibleEditableTextPasteText(AtkEditableText*, gint position);
    3528
    3629#endif // WebKitAccessibleInterfaceEditableText_h
  • trunk/Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceHyperlinkImpl.cpp

    r105724 r105791  
    2727static GQuark hyperlinkObjectQuark = 0;
    2828
    29 void webkitAccessibleHyperlinkImplInterfaceInit(AtkHyperlinkImplIface* iface)
    30 {
    31     iface->get_hyperlink = webkitAccessibleHyperlinkImplGetHyperlink;
    32     hyperlinkObjectQuark = g_quark_from_static_string("webkit-accessible-hyperlink-object");
    33 }
    34 
    35 AtkHyperlink* webkitAccessibleHyperlinkImplGetHyperlink(AtkHyperlinkImpl* hyperlink)
     29static AtkHyperlink* webkitAccessibleHyperlinkImplGetHyperlink(AtkHyperlinkImpl* hyperlink)
    3630{
    3731    AtkHyperlink* hyperlinkObject = ATK_HYPERLINK(g_object_get_qdata(G_OBJECT(hyperlink), hyperlinkObjectQuark));
     
    4236    return hyperlinkObject;
    4337}
     38
     39void webkitAccessibleHyperlinkImplInterfaceInit(AtkHyperlinkImplIface* iface)
     40{
     41    iface->get_hyperlink = webkitAccessibleHyperlinkImplGetHyperlink;
     42    hyperlinkObjectQuark = g_quark_from_static_string("webkit-accessible-hyperlink-object");
     43}
  • trunk/Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceHyperlinkImpl.h

    r105724 r105791  
    2424
    2525void webkitAccessibleHyperlinkImplInterfaceInit(AtkHyperlinkImplIface*);
    26 AtkHyperlink* webkitAccessibleHyperlinkImplGetHyperlink(AtkHyperlinkImpl*);
    2726
    2827#endif // WebKitAccessibleInterfaceHyperlinkImpl_h
  • trunk/Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceHypertext.cpp

    r105725 r105791  
    3434}
    3535
    36 void webkitAccessibleHypertextInterfaceInit(AtkHypertextIface* iface)
    37 {
    38     iface->get_link = webkitAccessibleHypertextGetLink;
    39     iface->get_n_links = webkitAccessibleHypertextGetNLinks;
    40     iface->get_link_index = webkitAccessibleHypertextGetLinkIndex;
    41 }
    42 
    43 AtkHyperlink* webkitAccessibleHypertextGetLink(AtkHypertext* hypertext, gint index)
     36static AtkHyperlink* webkitAccessibleHypertextGetLink(AtkHypertext* hypertext, gint index)
    4437{
    4538    AccessibilityObject::AccessibilityChildrenVector children = core(hypertext)->children();
     
    6659}
    6760
    68 gint webkitAccessibleHypertextGetNLinks(AtkHypertext* hypertext)
     61static gint webkitAccessibleHypertextGetNLinks(AtkHypertext* hypertext)
    6962{
    7063    AccessibilityObject::AccessibilityChildrenVector children = core(hypertext)->children();
     
    8578}
    8679
    87 gint webkitAccessibleHypertextGetLinkIndex(AtkHypertext* hypertext, gint charIndex)
     80static gint webkitAccessibleHypertextGetLinkIndex(AtkHypertext* hypertext, gint charIndex)
    8881{
    8982    size_t linksCount = webkitAccessibleHypertextGetNLinks(hypertext);
     
    10497    return -1;
    10598}
     99
     100void webkitAccessibleHypertextInterfaceInit(AtkHypertextIface* iface)
     101{
     102    iface->get_link = webkitAccessibleHypertextGetLink;
     103    iface->get_n_links = webkitAccessibleHypertextGetNLinks;
     104    iface->get_link_index = webkitAccessibleHypertextGetLinkIndex;
     105}
  • trunk/Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceHypertext.h

    r105725 r105791  
    2424
    2525void webkitAccessibleHypertextInterfaceInit(AtkHypertextIface*);
    26 AtkHyperlink* webkitAccessibleHypertextGetLink(AtkHypertext*, gint index);
    27 gint webkitAccessibleHypertextGetNLinks(AtkHypertext*);
    28 gint webkitAccessibleHypertextGetLinkIndex(AtkHypertext*, gint charIndex);
    2926
    3027#endif // WebKitAccessibleInterfaceHypertext_h
  • trunk/Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceImage.cpp

    r105726 r105791  
    4747}
    4848
    49 void webkitAccessibleImageInterfaceInit(AtkImageIface* iface)
    50 {
    51     iface->get_image_position = webkitAccessibleImageGetImagePosition;
    52     iface->get_image_description = webkitAccessibleImageGetImageDescription;
    53     iface->get_image_size = webkitAccessibleImageGetImageSize;
    54 }
    55 
    56 void webkitAccessibleImageGetImagePosition(AtkImage* image, gint* x, gint* y, AtkCoordType coordType)
     49static void webkitAccessibleImageGetImagePosition(AtkImage* image, gint* x, gint* y, AtkCoordType coordType)
    5750{
    5851    IntRect rect = core(image)->elementRect();
     
    6053}
    6154
    62 const gchar* webkitAccessibleImageGetImageDescription(AtkImage* image)
     55static const gchar* webkitAccessibleImageGetImageDescription(AtkImage* image)
    6356{
    6457    return returnString(core(image)->accessibilityDescription());
    6558}
    6659
    67 void webkitAccessibleImageGetImageSize(AtkImage* image, gint* width, gint* height)
     60static void webkitAccessibleImageGetImageSize(AtkImage* image, gint* width, gint* height)
    6861{
    6962    IntSize size = core(image)->size();
     
    7467        *height = size.height();
    7568}
     69
     70void webkitAccessibleImageInterfaceInit(AtkImageIface* iface)
     71{
     72    iface->get_image_position = webkitAccessibleImageGetImagePosition;
     73    iface->get_image_description = webkitAccessibleImageGetImageDescription;
     74    iface->get_image_size = webkitAccessibleImageGetImageSize;
     75}
  • trunk/Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceImage.h

    r105726 r105791  
    2626
    2727void webkitAccessibleImageInterfaceInit(AtkImageIface*);
    28 void webkitAccessibleImageGetImagePosition(AtkImage*, gint* x, gint* y, AtkCoordType);
    29 const gchar* webkitAccessibleImageGetImageDescription(AtkImage*);
    30 void webkitAccessibleImageGetImageSize(AtkImage*, gint* width, gint* height);
    3128
    3229#endif // WebKitAccessibleInterfaceImage_h
  • trunk/Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceSelection.cpp

    r105727 r105791  
    124124}
    125125
     126static gboolean webkitAccessibleSelectionAddSelection(AtkSelection* selection, gint index)
     127{
     128    AccessibilityObject* coreSelection = core(selection);
     129    if (!coreSelection)
     130        return FALSE;
     131
     132    AccessibilityObject* option = optionFromList(selection, index);
     133    if (option && (coreSelection->isListBox() || coreSelection->isMenuList())) {
     134        option->setSelected(true);
     135        return option->isSelected();
     136    }
     137
     138    return FALSE;
     139}
     140
     141static gboolean webkitAccessibleSelectionClearSelection(AtkSelection* selection)
     142{
     143    AccessibilityObject* coreSelection = core(selection);
     144    if (!coreSelection)
     145        return FALSE;
     146
     147    AccessibilityObject::AccessibilityChildrenVector selectedItems;
     148    if (coreSelection->isListBox() || coreSelection->isMenuList()) {
     149        // Set the list of selected items to an empty list; then verify that it worked.
     150        AccessibilityListBox* listBox = static_cast<AccessibilityListBox*>(coreSelection);
     151        listBox->setSelectedChildren(selectedItems);
     152        listBox->selectedChildren(selectedItems);
     153        return !selectedItems.size();
     154    }
     155    return FALSE;
     156}
     157
     158static AtkObject* webkitAccessibleSelectionRefSelection(AtkSelection* selection, gint index)
     159{
     160    AccessibilityObject* option = optionFromSelection(selection, index);
     161    if (option) {
     162        AtkObject* child = option->wrapper();
     163        g_object_ref(child);
     164        return child;
     165    }
     166
     167    return 0;
     168}
     169
     170static gint webkitAccessibleSelectionGetSelectionCount(AtkSelection* selection)
     171{
     172    AccessibilityObject* coreSelection = core(selection);
     173    if (!coreSelection || !coreSelection->isAccessibilityRenderObject())
     174        return 0;
     175
     176    if (coreSelection->isListBox()) {
     177        AccessibilityObject::AccessibilityChildrenVector selectedItems;
     178        coreSelection->selectedChildren(selectedItems);
     179        return static_cast<gint>(selectedItems.size());
     180    }
     181
     182    if (coreSelection->isMenuList()) {
     183        RenderObject* renderer = coreSelection->renderer();
     184        if (!renderer)
     185            return 0;
     186
     187        int selectedIndex = toHTMLSelectElement(renderer->node())->selectedIndex();
     188        return selectedIndex >= 0 && selectedIndex < static_cast<int>(toHTMLSelectElement(renderer->node())->listItems().size());
     189    }
     190
     191    return 0;
     192}
     193
     194static gboolean webkitAccessibleSelectionIsChildSelected(AtkSelection* selection, gint index)
     195{
     196    AccessibilityObject* coreSelection = core(selection);
     197    if (!coreSelection)
     198        return 0;
     199
     200    AccessibilityObject* option = optionFromList(selection, index);
     201    if (option && (coreSelection->isListBox() || coreSelection->isMenuList()))
     202        return option->isSelected();
     203
     204    return FALSE;
     205}
     206
     207static gboolean webkitAccessibleSelectionRemoveSelection(AtkSelection* selection, gint index)
     208{
     209    AccessibilityObject* coreSelection = core(selection);
     210    if (!coreSelection)
     211        return 0;
     212
     213    // TODO: This is only getting called if i == 0. What is preventing the rest?
     214    AccessibilityObject* option = optionFromSelection(selection, index);
     215    if (option && (coreSelection->isListBox() || coreSelection->isMenuList())) {
     216        option->setSelected(false);
     217        return !option->isSelected();
     218    }
     219
     220    return FALSE;
     221}
     222
     223static gboolean webkitAccessibleSelectionSelectAllSelection(AtkSelection* selection)
     224{
     225    AccessibilityObject* coreSelection = core(selection);
     226    if (!coreSelection || !coreSelection->isMultiSelectable())
     227        return FALSE;
     228
     229    AccessibilityObject::AccessibilityChildrenVector children = coreSelection->children();
     230    if (coreSelection->isListBox()) {
     231        AccessibilityListBox* listBox = static_cast<AccessibilityListBox*>(coreSelection);
     232        listBox->setSelectedChildren(children);
     233        AccessibilityObject::AccessibilityChildrenVector selectedItems;
     234        listBox->selectedChildren(selectedItems);
     235        return selectedItems.size() == children.size();
     236    }
     237
     238    return FALSE;
     239}
     240
    126241void webkitAccessibleSelectionInterfaceInit(AtkSelectionIface* iface)
    127242{
     
    134249    iface->select_all_selection = webkitAccessibleSelectionSelectAllSelection;
    135250}
    136 
    137 gboolean webkitAccessibleSelectionAddSelection(AtkSelection* selection, gint index)
    138 {
    139     AccessibilityObject* coreSelection = core(selection);
    140     if (!coreSelection)
    141         return FALSE;
    142 
    143     AccessibilityObject* option = optionFromList(selection, index);
    144     if (option && (coreSelection->isListBox() || coreSelection->isMenuList())) {
    145         option->setSelected(true);
    146         return option->isSelected();
    147     }
    148 
    149     return FALSE;
    150 }
    151 
    152 gboolean webkitAccessibleSelectionClearSelection(AtkSelection* selection)
    153 {
    154     AccessibilityObject* coreSelection = core(selection);
    155     if (!coreSelection)
    156         return FALSE;
    157 
    158     AccessibilityObject::AccessibilityChildrenVector selectedItems;
    159     if (coreSelection->isListBox() || coreSelection->isMenuList()) {
    160         // Set the list of selected items to an empty list; then verify that it worked.
    161         AccessibilityListBox* listBox = static_cast<AccessibilityListBox*>(coreSelection);
    162         listBox->setSelectedChildren(selectedItems);
    163         listBox->selectedChildren(selectedItems);
    164         return !selectedItems.size();
    165     }
    166     return FALSE;
    167 }
    168 
    169 AtkObject* webkitAccessibleSelectionRefSelection(AtkSelection* selection, gint index)
    170 {
    171     AccessibilityObject* option = optionFromSelection(selection, index);
    172     if (option) {
    173         AtkObject* child = option->wrapper();
    174         g_object_ref(child);
    175         return child;
    176     }
    177 
    178     return 0;
    179 }
    180 
    181 gint webkitAccessibleSelectionGetSelectionCount(AtkSelection* selection)
    182 {
    183     AccessibilityObject* coreSelection = core(selection);
    184     if (!coreSelection || !coreSelection->isAccessibilityRenderObject())
    185         return 0;
    186 
    187     if (coreSelection->isListBox()) {
    188         AccessibilityObject::AccessibilityChildrenVector selectedItems;
    189         coreSelection->selectedChildren(selectedItems);
    190         return static_cast<gint>(selectedItems.size());
    191     }
    192 
    193     if (coreSelection->isMenuList()) {
    194         RenderObject* renderer = coreSelection->renderer();
    195         if (!renderer)
    196             return 0;
    197 
    198         int selectedIndex = toHTMLSelectElement(renderer->node())->selectedIndex();
    199         return selectedIndex >= 0 && selectedIndex < static_cast<int>(toHTMLSelectElement(renderer->node())->listItems().size());
    200     }
    201 
    202     return 0;
    203 }
    204 
    205 gboolean webkitAccessibleSelectionIsChildSelected(AtkSelection* selection, gint index)
    206 {
    207     AccessibilityObject* coreSelection = core(selection);
    208     if (!coreSelection)
    209         return 0;
    210 
    211     AccessibilityObject* option = optionFromList(selection, index);
    212     if (option && (coreSelection->isListBox() || coreSelection->isMenuList()))
    213         return option->isSelected();
    214 
    215     return FALSE;
    216 }
    217 
    218 gboolean webkitAccessibleSelectionRemoveSelection(AtkSelection* selection, gint index)
    219 {
    220     AccessibilityObject* coreSelection = core(selection);
    221     if (!coreSelection)
    222         return 0;
    223 
    224     // TODO: This is only getting called if i == 0. What is preventing the rest?
    225     AccessibilityObject* option = optionFromSelection(selection, index);
    226     if (option && (coreSelection->isListBox() || coreSelection->isMenuList())) {
    227         option->setSelected(false);
    228         return !option->isSelected();
    229     }
    230 
    231     return FALSE;
    232 }
    233 
    234 gboolean webkitAccessibleSelectionSelectAllSelection(AtkSelection* selection)
    235 {
    236     AccessibilityObject* coreSelection = core(selection);
    237     if (!coreSelection || !coreSelection->isMultiSelectable())
    238         return FALSE;
    239 
    240     AccessibilityObject::AccessibilityChildrenVector children = coreSelection->children();
    241     if (coreSelection->isListBox()) {
    242         AccessibilityListBox* listBox = static_cast<AccessibilityListBox*>(coreSelection);
    243         listBox->setSelectedChildren(children);
    244         AccessibilityObject::AccessibilityChildrenVector selectedItems;
    245         listBox->selectedChildren(selectedItems);
    246         return selectedItems.size() == children.size();
    247     }
    248 
    249     return FALSE;
    250 }
  • trunk/Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceSelection.h

    r105727 r105791  
    2626
    2727void webkitAccessibleSelectionInterfaceInit(AtkSelectionIface*);
    28 gboolean webkitAccessibleSelectionAddSelection(AtkSelection*, gint index);
    29 gboolean webkitAccessibleSelectionClearSelection(AtkSelection*);
    30 AtkObject* webkitAccessibleSelectionRefSelection(AtkSelection*, gint index);
    31 gint webkitAccessibleSelectionGetSelectionCount(AtkSelection*);
    32 gboolean webkitAccessibleSelectionIsChildSelected(AtkSelection*, gint index);
    33 gboolean webkitAccessibleSelectionRemoveSelection(AtkSelection*, gint index);
    34 gboolean webkitAccessibleSelectionSelectAllSelection(AtkSelection*);
    3528
    3629#endif // WebKitAccessibleInterfaceSelection_h
  • trunk/Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceTable.cpp

    r105749 r105791  
    8585        }
    8686    }
     87    return 0;
     88}
     89
     90static AtkObject* webkitAccessibleTableRefAt(AtkTable* table, gint row, gint column)
     91{
     92    AccessibilityTableCell* axCell = cell(table, row, column);
     93    if (!axCell)
     94        return 0;
     95    return axCell->wrapper();
     96}
     97
     98static gint webkitAccessibleTableGetIndexAt(AtkTable* table, gint row, gint column)
     99{
     100    AccessibilityTableCell* axCell = cell(table, row, column);
     101    AccessibilityTable* axTable = static_cast<AccessibilityTable*>(core(table));
     102    return cellIndex(axCell, axTable);
     103}
     104
     105static gint webkitAccessibleTableGetColumnAtIndex(AtkTable* table, gint index)
     106{
     107    AccessibilityTableCell* axCell = cellAtIndex(table, index);
     108    if (axCell) {
     109        pair<int, int> columnRange;
     110        axCell->columnIndexRange(columnRange);
     111        return columnRange.first;
     112    }
     113    return -1;
     114}
     115
     116static gint webkitAccessibleTableGetRowAtIndex(AtkTable* table, gint index)
     117{
     118    AccessibilityTableCell* axCell = cellAtIndex(table, index);
     119    if (axCell) {
     120        pair<int, int> rowRange;
     121        axCell->rowIndexRange(rowRange);
     122        return rowRange.first;
     123    }
     124    return -1;
     125}
     126
     127static gint webkitAccessibleTableGetNColumns(AtkTable* table)
     128{
     129    AccessibilityObject* accTable = core(table);
     130    if (accTable->isAccessibilityRenderObject())
     131        return static_cast<AccessibilityTable*>(accTable)->columnCount();
     132    return 0;
     133}
     134
     135static gint webkitAccessibleTableGetNRows(AtkTable* table)
     136{
     137    AccessibilityObject* accTable = core(table);
     138    if (accTable->isAccessibilityRenderObject())
     139        return static_cast<AccessibilityTable*>(accTable)->rowCount();
     140    return 0;
     141}
     142
     143static gint webkitAccessibleTableGetColumnExtentAt(AtkTable* table, gint row, gint column)
     144{
     145    AccessibilityTableCell* axCell = cell(table, row, column);
     146    if (axCell) {
     147        pair<int, int> columnRange;
     148        axCell->columnIndexRange(columnRange);
     149        return columnRange.second;
     150    }
     151    return 0;
     152}
     153
     154static gint webkitAccessibleTableGetRowExtentAt(AtkTable* table, gint row, gint column)
     155{
     156    AccessibilityTableCell* axCell = cell(table, row, column);
     157    if (axCell) {
     158        pair<int, int> rowRange;
     159        axCell->rowIndexRange(rowRange);
     160        return rowRange.second;
     161    }
     162    return 0;
     163}
     164
     165static AtkObject* webkitAccessibleTableGetColumnHeader(AtkTable* table, gint column)
     166{
     167    AccessibilityObject* accTable = core(table);
     168    if (accTable->isAccessibilityRenderObject()) {
     169        AccessibilityObject::AccessibilityChildrenVector allColumnHeaders;
     170        static_cast<AccessibilityTable*>(accTable)->columnHeaders(allColumnHeaders);
     171        unsigned columnCount = allColumnHeaders.size();
     172        for (unsigned k = 0; k < columnCount; ++k) {
     173            pair<int, int> columnRange;
     174            AccessibilityTableCell* cell = static_cast<AccessibilityTableCell*>(allColumnHeaders.at(k).get());
     175            cell->columnIndexRange(columnRange);
     176            if (columnRange.first <= column && column < columnRange.first + columnRange.second)
     177                return allColumnHeaders[k]->wrapper();
     178        }
     179    }
     180    return 0;
     181}
     182
     183static AtkObject* webkitAccessibleTableGetRowHeader(AtkTable* table, gint row)
     184{
     185    AccessibilityObject* accTable = core(table);
     186    if (accTable->isAccessibilityRenderObject()) {
     187        AccessibilityObject::AccessibilityChildrenVector allRowHeaders;
     188        static_cast<AccessibilityTable*>(accTable)->rowHeaders(allRowHeaders);
     189        unsigned rowCount = allRowHeaders.size();
     190        for (unsigned k = 0; k < rowCount; ++k) {
     191            pair<int, int> rowRange;
     192            AccessibilityTableCell* cell = static_cast<AccessibilityTableCell*>(allRowHeaders.at(k).get());
     193            cell->rowIndexRange(rowRange);
     194            if (rowRange.first <= row && row < rowRange.first + rowRange.second)
     195                return allRowHeaders[k]->wrapper();
     196        }
     197    }
     198    return 0;
     199}
     200
     201static AtkObject* webkitAccessibleTableGetCaption(AtkTable* table)
     202{
     203    AccessibilityObject* accTable = core(table);
     204    if (accTable->isAccessibilityRenderObject()) {
     205        Node* node = accTable->node();
     206        if (node && node->hasTagName(HTMLNames::tableTag)) {
     207            HTMLTableCaptionElement* caption = static_cast<HTMLTableElement*>(node)->caption();
     208            if (caption)
     209                return AccessibilityObject::firstAccessibleObjectFromNode(caption->renderer()->node())->wrapper();
     210        }
     211    }
     212    return 0;
     213}
     214
     215static const gchar* webkitAccessibleTableGetColumnDescription(AtkTable* table, gint column)
     216{
     217    AtkObject* columnHeader = atk_table_get_column_header(table, column);
     218    if (columnHeader && ATK_IS_TEXT(columnHeader))
     219        return atk_text_get_text(ATK_TEXT(columnHeader), 0, -1);
     220
     221    return 0;
     222}
     223
     224static const gchar* webkitAccessibleTableGetRowDescription(AtkTable* table, gint row)
     225{
     226    AtkObject* rowHeader = atk_table_get_row_header(table, row);
     227    if (rowHeader && ATK_IS_TEXT(rowHeader))
     228        return atk_text_get_text(ATK_TEXT(rowHeader), 0, -1);
     229
    87230    return 0;
    88231}
     
    104247    iface->get_row_description = webkitAccessibleTableGetRowDescription;
    105248}
    106 
    107 AtkObject* webkitAccessibleTableRefAt(AtkTable* table, gint row, gint column)
    108 {
    109     AccessibilityTableCell* axCell = cell(table, row, column);
    110     if (!axCell)
    111         return 0;
    112     return axCell->wrapper();
    113 }
    114 
    115 gint webkitAccessibleTableGetIndexAt(AtkTable* table, gint row, gint column)
    116 {
    117     AccessibilityTableCell* axCell = cell(table, row, column);
    118     AccessibilityTable* axTable = static_cast<AccessibilityTable*>(core(table));
    119     return cellIndex(axCell, axTable);
    120 }
    121 
    122 gint webkitAccessibleTableGetColumnAtIndex(AtkTable* table, gint index)
    123 {
    124     AccessibilityTableCell* axCell = cellAtIndex(table, index);
    125     if (axCell) {
    126         pair<int, int> columnRange;
    127         axCell->columnIndexRange(columnRange);
    128         return columnRange.first;
    129     }
    130     return -1;
    131 }
    132 
    133 gint webkitAccessibleTableGetRowAtIndex(AtkTable* table, gint index)
    134 {
    135     AccessibilityTableCell* axCell = cellAtIndex(table, index);
    136     if (axCell) {
    137         pair<int, int> rowRange;
    138         axCell->rowIndexRange(rowRange);
    139         return rowRange.first;
    140     }
    141     return -1;
    142 }
    143 
    144 gint webkitAccessibleTableGetNColumns(AtkTable* table)
    145 {
    146     AccessibilityObject* accTable = core(table);
    147     if (accTable->isAccessibilityRenderObject())
    148         return static_cast<AccessibilityTable*>(accTable)->columnCount();
    149     return 0;
    150 }
    151 
    152 gint webkitAccessibleTableGetNRows(AtkTable* table)
    153 {
    154     AccessibilityObject* accTable = core(table);
    155     if (accTable->isAccessibilityRenderObject())
    156         return static_cast<AccessibilityTable*>(accTable)->rowCount();
    157     return 0;
    158 }
    159 
    160 gint webkitAccessibleTableGetColumnExtentAt(AtkTable* table, gint row, gint column)
    161 {
    162     AccessibilityTableCell* axCell = cell(table, row, column);
    163     if (axCell) {
    164         pair<int, int> columnRange;
    165         axCell->columnIndexRange(columnRange);
    166         return columnRange.second;
    167     }
    168     return 0;
    169 }
    170 
    171 gint webkitAccessibleTableGetRowExtentAt(AtkTable* table, gint row, gint column)
    172 {
    173     AccessibilityTableCell* axCell = cell(table, row, column);
    174     if (axCell) {
    175         pair<int, int> rowRange;
    176         axCell->rowIndexRange(rowRange);
    177         return rowRange.second;
    178     }
    179     return 0;
    180 }
    181 
    182 AtkObject* webkitAccessibleTableGetColumnHeader(AtkTable* table, gint column)
    183 {
    184     AccessibilityObject* accTable = core(table);
    185     if (accTable->isAccessibilityRenderObject()) {
    186         AccessibilityObject::AccessibilityChildrenVector allColumnHeaders;
    187         static_cast<AccessibilityTable*>(accTable)->columnHeaders(allColumnHeaders);
    188         unsigned columnCount = allColumnHeaders.size();
    189         for (unsigned k = 0; k < columnCount; ++k) {
    190             pair<int, int> columnRange;
    191             AccessibilityTableCell* cell = static_cast<AccessibilityTableCell*>(allColumnHeaders.at(k).get());
    192             cell->columnIndexRange(columnRange);
    193             if (columnRange.first <= column && column < columnRange.first + columnRange.second)
    194                 return allColumnHeaders[k]->wrapper();
    195         }
    196     }
    197     return 0;
    198 }
    199 
    200 AtkObject* webkitAccessibleTableGetRowHeader(AtkTable* table, gint row)
    201 {
    202     AccessibilityObject* accTable = core(table);
    203     if (accTable->isAccessibilityRenderObject()) {
    204         AccessibilityObject::AccessibilityChildrenVector allRowHeaders;
    205         static_cast<AccessibilityTable*>(accTable)->rowHeaders(allRowHeaders);
    206         unsigned rowCount = allRowHeaders.size();
    207         for (unsigned k = 0; k < rowCount; ++k) {
    208             pair<int, int> rowRange;
    209             AccessibilityTableCell* cell = static_cast<AccessibilityTableCell*>(allRowHeaders.at(k).get());
    210             cell->rowIndexRange(rowRange);
    211             if (rowRange.first <= row && row < rowRange.first + rowRange.second)
    212                 return allRowHeaders[k]->wrapper();
    213         }
    214     }
    215     return 0;
    216 }
    217 
    218 AtkObject* webkitAccessibleTableGetCaption(AtkTable* table)
    219 {
    220     AccessibilityObject* accTable = core(table);
    221     if (accTable->isAccessibilityRenderObject()) {
    222         Node* node = accTable->node();
    223         if (node && node->hasTagName(HTMLNames::tableTag)) {
    224             HTMLTableCaptionElement* caption = static_cast<HTMLTableElement*>(node)->caption();
    225             if (caption)
    226                 return AccessibilityObject::firstAccessibleObjectFromNode(caption->renderer()->node())->wrapper();
    227         }
    228     }
    229     return 0;
    230 }
    231 
    232 const gchar* webkitAccessibleTableGetColumnDescription(AtkTable* table, gint column)
    233 {
    234     AtkObject* columnHeader = atk_table_get_column_header(table, column);
    235     if (columnHeader && ATK_IS_TEXT(columnHeader))
    236         return webkitAccessibleTextGetText(ATK_TEXT(columnHeader), 0, -1);
    237 
    238     return 0;
    239 }
    240 
    241 const gchar* webkitAccessibleTableGetRowDescription(AtkTable* table, gint row)
    242 {
    243     AtkObject* rowHeader = atk_table_get_row_header(table, row);
    244     if (rowHeader && ATK_IS_TEXT(rowHeader))
    245         return webkitAccessibleTextGetText(ATK_TEXT(rowHeader), 0, -1);
    246 
    247     return 0;
    248 }
  • trunk/Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceTable.h

    r105749 r105791  
    2626
    2727void webkitAccessibleTableInterfaceInit(AtkTableIface*);
    28 AtkObject* webkitAccessibleTableRefAt(AtkTable*, gint row, gint column);
    29 gint webkitAccessibleTableGetIndexAt(AtkTable*, gint row, gint column);
    30 gint webkitAccessibleTableGetColumnAtIndex(AtkTable*, gint index);
    31 gint webkitAccessibleTableGetRowAtIndex(AtkTable*, gint index);
    32 gint webkitAccessibleTableGetNColumns(AtkTable*);
    33 gint webkitAccessibleTableGetNRows(AtkTable*);
    34 gint webkitAccessibleTableGetColumnExtentAt(AtkTable*, gint row, gint column);
    35 gint webkitAccessibleTableGetRowExtentAt(AtkTable*, gint row, gint column);
    36 AtkObject* webkitAccessibleTableGetColumnHeader(AtkTable*, gint column);
    37 AtkObject* webkitAccessibleTableGetRowHeader(AtkTable*, gint row);
    38 AtkObject* webkitAccessibleTableGetCaption(AtkTable*);
    39 const gchar* webkitAccessibleTableGetColumnDescription(AtkTable*, gint column);
    40 const gchar* webkitAccessibleTableGetRowDescription(AtkTable*, gint row);
    4128
    4229#endif // WebKitAccessibleInterfaceTable_h
  • trunk/Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceText.cpp

    r105745 r105791  
    6060}
    6161
    62 gchar* textForRenderer(RenderObject* renderer)
     62static gchar* textForRenderer(RenderObject* renderer)
    6363{
    6464    GString* resultText = g_string_new(0);
     
    119119}
    120120
    121 gchar* textForObject(AccessibilityObject* coreObject)
     121static gchar* textForObject(AccessibilityObject* coreObject)
    122122{
    123123    GString* str = g_string_new(0);
     
    144144    return g_string_free(str, FALSE);
    145145}
     146
     147static gchar* webkitAccessibleTextGetText(AtkText*, gint startOffset, gint endOffset);
    146148
    147149static GailTextUtil* getGailTextUtilForAtk(AtkText* textObject)
     
    505507}
    506508
     509static gchar* webkitAccessibleTextGetText(AtkText* text, gint startOffset, gint endOffset)
     510{
     511    AccessibilityObject* coreObject = core(text);
     512
     513    int end = endOffset;
     514    if (endOffset == -1) {
     515        end = coreObject->stringValue().length();
     516        if (!end)
     517            end = coreObject->textUnderElement().length();
     518    }
     519
     520    String ret;
     521    if (coreObject->isTextControl())
     522        ret = coreObject->doAXStringForRange(PlainTextRange(0, endOffset));
     523    else {
     524        ret = coreObject->stringValue();
     525        if (!ret)
     526            ret = coreObject->textUnderElement();
     527    }
     528
     529    if (!ret.length()) {
     530        // This can happen at least with anonymous RenderBlocks (e.g. body text amongst paragraphs)
     531        ret = String(textForObject(coreObject));
     532        if (!end)
     533            end = ret.length();
     534    }
     535
     536    // Prefix a item number/bullet if needed
     537    if (coreObject->roleValue() == ListItemRole) {
     538        RenderObject* objRenderer = coreObject->renderer();
     539        if (objRenderer && objRenderer->isListItem()) {
     540            String markerText = toRenderListItem(objRenderer)->markerTextWithSuffix();
     541            ret = objRenderer->style()->direction() == LTR ? markerText + ret : ret + markerText;
     542            if (endOffset == -1)
     543                end += markerText.length();
     544        }
     545    }
     546
     547    ret = ret.substring(startOffset, end - startOffset);
     548    return g_strdup(ret.utf8().data());
     549}
     550
     551static gchar* webkitAccessibleTextGetTextAfterOffset(AtkText* text, gint offset, AtkTextBoundary boundaryType, gint* startOffset, gint* endOffset)
     552{
     553    return gail_text_util_get_text(getGailTextUtilForAtk(text), getPangoLayoutForAtk(text), GAIL_AFTER_OFFSET, boundaryType, offset, startOffset, endOffset);
     554}
     555
     556static gchar* webkitAccessibleTextGetTextAtOffset(AtkText* text, gint offset, AtkTextBoundary boundaryType, gint* startOffset, gint* endOffset)
     557{
     558    return gail_text_util_get_text(getGailTextUtilForAtk(text), getPangoLayoutForAtk(text), GAIL_AT_OFFSET, boundaryType, offset, startOffset, endOffset);
     559}
     560
     561static gchar* webkitAccessibleTextGetTextBeforeOffset(AtkText* text, gint offset, AtkTextBoundary boundaryType, gint* startOffset, gint* endOffset)
     562{
     563    return gail_text_util_get_text(getGailTextUtilForAtk(text), getPangoLayoutForAtk(text), GAIL_BEFORE_OFFSET, boundaryType, offset, startOffset, endOffset);
     564}
     565
     566static gunichar webkitAccessibleTextGetCharacterAtOffset(AtkText*, gint)
     567{
     568    notImplemented();
     569    return 0;
     570}
     571
     572static gint webkitAccessibleTextGetCaretOffset(AtkText* text)
     573{
     574    // coreObject is the unignored object whose offset the caller is requesting.
     575    // focusedObject is the object with the caret. It is likely ignored -- unless it's a link.
     576    AccessibilityObject* coreObject = core(text);
     577    if (!coreObject->isAccessibilityRenderObject())
     578        return 0;
     579
     580    // We need to make sure we pass a valid object as reference.
     581    if (coreObject->accessibilityIsIgnored())
     582        coreObject = coreObject->parentObjectUnignored();
     583    if (!coreObject)
     584        return 0;
     585
     586    int offset;
     587    if (!objectFocusedAndCaretOffsetUnignored(coreObject, offset))
     588        return 0;
     589
     590    RenderObject* renderer = coreObject->renderer();
     591    if (renderer && renderer->isListItem()) {
     592        String markerText = toRenderListItem(renderer)->markerTextWithSuffix();
     593
     594        // We need to adjust the offset for the list item marker.
     595        offset += markerText.length();
     596    }
     597
     598    // TODO: Verify this for RTL text.
     599    return offset;
     600}
     601
     602static AtkAttributeSet* webkitAccessibleTextGetRunAttributes(AtkText* text, gint offset, gint* startOffset, gint* endOffset)
     603{
     604    AccessibilityObject* coreObject = core(text);
     605    AtkAttributeSet* result;
     606
     607    if (!coreObject) {
     608        *startOffset = 0;
     609        *endOffset = atk_text_get_character_count(text);
     610        return 0;
     611    }
     612
     613    if (offset == -1)
     614        offset = atk_text_get_caret_offset(text);
     615
     616    result = getRunAttributesFromAccesibilityObject(coreObject, offset, startOffset, endOffset);
     617
     618    if (*startOffset < 0) {
     619        *startOffset = offset;
     620        *endOffset = offset;
     621    }
     622
     623    return result;
     624}
     625
     626static AtkAttributeSet* webkitAccessibleTextGetDefaultAttributes(AtkText* text)
     627{
     628    AccessibilityObject* coreObject = core(text);
     629    if (!coreObject || !coreObject->isAccessibilityRenderObject())
     630        return 0;
     631
     632    return getAttributeSetForAccessibilityObject(coreObject);
     633}
     634
     635static void webkitAccessibleTextGetCharacterExtents(AtkText* text, gint offset, gint* x, gint* y, gint* width, gint* height, AtkCoordType coords)
     636{
     637    IntRect extents = textExtents(text, offset, 1, coords);
     638    *x = extents.x();
     639    *y = extents.y();
     640    *width = extents.width();
     641    *height = extents.height();
     642}
     643
     644static void webkitAccessibleTextGetRangeExtents(AtkText* text, gint startOffset, gint endOffset, AtkCoordType coords, AtkTextRectangle* rect)
     645{
     646    IntRect extents = textExtents(text, startOffset, endOffset - startOffset, coords);
     647    rect->x = extents.x();
     648    rect->y = extents.y();
     649    rect->width = extents.width();
     650    rect->height = extents.height();
     651}
     652
     653static gint webkitAccessibleTextGetCharacterCount(AtkText* text)
     654{
     655    return accessibilityObjectLength(core(text));
     656}
     657
     658static gint webkitAccessibleTextGetOffsetAtPoint(AtkText* text, gint x, gint y, AtkCoordType coords)
     659{
     660    // FIXME: Use the AtkCoordType
     661    // TODO: Is it correct to ignore range.length?
     662    IntPoint pos(x, y);
     663    PlainTextRange range = core(text)->doAXRangeForPosition(pos);
     664    return range.start;
     665}
     666
     667static gint webkitAccessibleTextGetNSelections(AtkText* text)
     668{
     669    AccessibilityObject* coreObject = core(text);
     670    VisibleSelection selection = coreObject->selection();
     671
     672    // Only range selections are needed for the purpose of this method
     673    if (!selection.isRange())
     674        return 0;
     675
     676    // We don't support multiple selections for now, so there's only
     677    // two possibilities
     678    // Also, we don't want to do anything if the selection does not
     679    // belong to the currently selected object. We have to check since
     680    // there's no way to get the selection for a given object, only
     681    // the global one (the API is a bit confusing)
     682    return selectionBelongsToObject(coreObject, selection) ? 1 : 0;
     683}
     684
     685static gchar* webkitAccessibleTextGetSelection(AtkText* text, gint selectionNum, gint* startOffset, gint* endOffset)
     686{
     687    // Default values, unless the contrary is proved
     688    *startOffset = *endOffset = 0;
     689
     690    // WebCore does not support multiple selection, so anything but 0 does not make sense for now.
     691    if (selectionNum)
     692        return 0;
     693
     694    // Get the offsets of the selection for the selected object
     695    AccessibilityObject* coreObject = core(text);
     696    VisibleSelection selection = coreObject->selection();
     697    getSelectionOffsetsForObject(coreObject, selection, *startOffset, *endOffset);
     698
     699    // Return 0 instead of "", as that's the expected result for
     700    // this AtkText method when there's no selection
     701    if (*startOffset == *endOffset)
     702        return 0;
     703
     704    return webkitAccessibleTextGetText(text, *startOffset, *endOffset);
     705}
     706
     707static gboolean webkitAccessibleTextAddSelection(AtkText*, gint, gint)
     708{
     709    notImplemented();
     710    return FALSE;
     711}
     712
     713static gboolean webkitAccessibleTextSetSelection(AtkText* text, gint selectionNum, gint startOffset, gint endOffset)
     714{
     715    // WebCore does not support multiple selection, so anything but 0 does not make sense for now.
     716    if (selectionNum)
     717        return FALSE;
     718
     719    AccessibilityObject* coreObject = core(text);
     720    if (!coreObject->isAccessibilityRenderObject())
     721        return FALSE;
     722
     723    // Consider -1 and out-of-bound values and correct them to length
     724    gint textCount = webkitAccessibleTextGetCharacterCount(text);
     725    if (startOffset < 0 || startOffset > textCount)
     726        startOffset = textCount;
     727    if (endOffset < 0 || endOffset > textCount)
     728        endOffset = textCount;
     729
     730    // We need to adjust the offsets for the list item marker.
     731    RenderObject* renderer = coreObject->renderer();
     732    if (renderer && renderer->isListItem()) {
     733        String markerText = toRenderListItem(renderer)->markerTextWithSuffix();
     734        int markerLength = markerText.length();
     735        if (startOffset < markerLength || endOffset < markerLength)
     736            return FALSE;
     737
     738        startOffset -= markerLength;
     739        endOffset -= markerLength;
     740    }
     741
     742    PlainTextRange textRange(startOffset, endOffset - startOffset);
     743    VisiblePositionRange range = coreObject->visiblePositionRangeForRange(textRange);
     744    if (range.isNull())
     745        return FALSE;
     746
     747    coreObject->setSelectedVisiblePositionRange(range);
     748    return TRUE;
     749}
     750
     751static gboolean webkitAccessibleTextRemoveSelection(AtkText* text, gint selectionNum)
     752{
     753    // WebCore does not support multiple selection, so anything but 0 does not make sense for now.
     754    if (selectionNum)
     755        return FALSE;
     756
     757    // Do nothing if current selection doesn't belong to the object
     758    if (!webkitAccessibleTextGetNSelections(text))
     759        return FALSE;
     760
     761    // Set a new 0-sized selection to the caret position, in order
     762    // to simulate selection removal (GAIL style)
     763    gint caretOffset = webkitAccessibleTextGetCaretOffset(text);
     764    return webkitAccessibleTextSetSelection(text, selectionNum, caretOffset, caretOffset);
     765}
     766
     767static gboolean webkitAccessibleTextSetCaretOffset(AtkText* text, gint offset)
     768{
     769    AccessibilityObject* coreObject = core(text);
     770
     771    if (!coreObject->isAccessibilityRenderObject())
     772        return FALSE;
     773
     774    RenderObject* renderer = coreObject->renderer();
     775    if (renderer && renderer->isListItem()) {
     776        String markerText = toRenderListItem(renderer)->markerTextWithSuffix();
     777        int markerLength = markerText.length();
     778        if (offset < markerLength)
     779            return FALSE;
     780
     781        // We need to adjust the offset for list items.
     782        offset -= markerLength;
     783    }
     784
     785    PlainTextRange textRange(offset, 0);
     786    VisiblePositionRange range = coreObject->visiblePositionRangeForRange(textRange);
     787    if (range.isNull())
     788        return FALSE;
     789
     790    coreObject->setSelectedVisiblePositionRange(range);
     791    return TRUE;
     792}
     793
    507794void webkitAccessibleTextInterfaceInit(AtkTextIface* iface)
    508795{
     
    526813    iface->set_caret_offset = webkitAccessibleTextSetCaretOffset;
    527814}
    528 
    529 gchar* webkitAccessibleTextGetText(AtkText* text, gint startOffset, gint endOffset)
    530 {
    531     AccessibilityObject* coreObject = core(text);
    532 
    533     int end = endOffset;
    534     if (endOffset == -1) {
    535         end = coreObject->stringValue().length();
    536         if (!end)
    537             end = coreObject->textUnderElement().length();
    538     }
    539 
    540     String ret;
    541     if (coreObject->isTextControl())
    542         ret = coreObject->doAXStringForRange(PlainTextRange(0, endOffset));
    543     else {
    544         ret = coreObject->stringValue();
    545         if (!ret)
    546             ret = coreObject->textUnderElement();
    547     }
    548 
    549     if (!ret.length()) {
    550         // This can happen at least with anonymous RenderBlocks (e.g. body text amongst paragraphs)
    551         ret = String(textForObject(coreObject));
    552         if (!end)
    553             end = ret.length();
    554     }
    555 
    556     // Prefix a item number/bullet if needed
    557     if (coreObject->roleValue() == ListItemRole) {
    558         RenderObject* objRenderer = coreObject->renderer();
    559         if (objRenderer && objRenderer->isListItem()) {
    560             String markerText = toRenderListItem(objRenderer)->markerTextWithSuffix();
    561             ret = objRenderer->style()->direction() == LTR ? markerText + ret : ret + markerText;
    562             if (endOffset == -1)
    563                 end += markerText.length();
    564         }
    565     }
    566 
    567     ret = ret.substring(startOffset, end - startOffset);
    568     return g_strdup(ret.utf8().data());
    569 }
    570 
    571 gchar* webkitAccessibleTextGetTextAfterOffset(AtkText* text, gint offset, AtkTextBoundary boundaryType, gint* startOffset, gint* endOffset)
    572 {
    573     return gail_text_util_get_text(getGailTextUtilForAtk(text), getPangoLayoutForAtk(text), GAIL_AFTER_OFFSET, boundaryType, offset, startOffset, endOffset);
    574 }
    575 
    576 gchar* webkitAccessibleTextGetTextAtOffset(AtkText* text, gint offset, AtkTextBoundary boundaryType, gint* startOffset, gint* endOffset)
    577 {
    578     return gail_text_util_get_text(getGailTextUtilForAtk(text), getPangoLayoutForAtk(text), GAIL_AT_OFFSET, boundaryType, offset, startOffset, endOffset);
    579 }
    580 
    581 gchar* webkitAccessibleTextGetTextBeforeOffset(AtkText* text, gint offset, AtkTextBoundary boundaryType, gint* startOffset, gint* endOffset)
    582 {
    583     return gail_text_util_get_text(getGailTextUtilForAtk(text), getPangoLayoutForAtk(text), GAIL_BEFORE_OFFSET, boundaryType, offset, startOffset, endOffset);
    584 }
    585 
    586 gunichar webkitAccessibleTextGetCharacterAtOffset(AtkText*, gint)
    587 {
    588     notImplemented();
    589     return 0;
    590 }
    591 
    592 gint webkitAccessibleTextGetCaretOffset(AtkText* text)
    593 {
    594     // coreObject is the unignored object whose offset the caller is requesting.
    595     // focusedObject is the object with the caret. It is likely ignored -- unless it's a link.
    596     AccessibilityObject* coreObject = core(text);
    597     if (!coreObject->isAccessibilityRenderObject())
    598         return 0;
    599 
    600     // We need to make sure we pass a valid object as reference.
    601     if (coreObject->accessibilityIsIgnored())
    602         coreObject = coreObject->parentObjectUnignored();
    603     if (!coreObject)
    604         return 0;
    605 
    606     int offset;
    607     if (!objectFocusedAndCaretOffsetUnignored(coreObject, offset))
    608         return 0;
    609 
    610     RenderObject* renderer = coreObject->renderer();
    611     if (renderer && renderer->isListItem()) {
    612         String markerText = toRenderListItem(renderer)->markerTextWithSuffix();
    613 
    614         // We need to adjust the offset for the list item marker.
    615         offset += markerText.length();
    616     }
    617 
    618     // TODO: Verify this for RTL text.
    619     return offset;
    620 }
    621 
    622 AtkAttributeSet* webkitAccessibleTextGetRunAttributes(AtkText* text, gint offset, gint* startOffset, gint* endOffset)
    623 {
    624     AccessibilityObject* coreObject = core(text);
    625     AtkAttributeSet* result;
    626 
    627     if (!coreObject) {
    628         *startOffset = 0;
    629         *endOffset = atk_text_get_character_count(text);
    630         return 0;
    631     }
    632 
    633     if (offset == -1)
    634         offset = atk_text_get_caret_offset(text);
    635 
    636     result = getRunAttributesFromAccesibilityObject(coreObject, offset, startOffset, endOffset);
    637 
    638     if (*startOffset < 0) {
    639         *startOffset = offset;
    640         *endOffset = offset;
    641     }
    642 
    643     return result;
    644 }
    645 
    646 AtkAttributeSet* webkitAccessibleTextGetDefaultAttributes(AtkText* text)
    647 {
    648     AccessibilityObject* coreObject = core(text);
    649     if (!coreObject || !coreObject->isAccessibilityRenderObject())
    650         return 0;
    651 
    652     return getAttributeSetForAccessibilityObject(coreObject);
    653 }
    654 
    655 void webkitAccessibleTextGetCharacterExtents(AtkText* text, gint offset, gint* x, gint* y, gint* width, gint* height, AtkCoordType coords)
    656 {
    657     IntRect extents = textExtents(text, offset, 1, coords);
    658     *x = extents.x();
    659     *y = extents.y();
    660     *width = extents.width();
    661     *height = extents.height();
    662 }
    663 
    664 void webkitAccessibleTextGetRangeExtents(AtkText* text, gint startOffset, gint endOffset, AtkCoordType coords, AtkTextRectangle* rect)
    665 {
    666     IntRect extents = textExtents(text, startOffset, endOffset - startOffset, coords);
    667     rect->x = extents.x();
    668     rect->y = extents.y();
    669     rect->width = extents.width();
    670     rect->height = extents.height();
    671 }
    672 
    673 gint webkitAccessibleTextGetCharacterCount(AtkText* text)
    674 {
    675     return accessibilityObjectLength(core(text));
    676 }
    677 
    678 gint webkitAccessibleTextGetOffsetAtPoint(AtkText* text, gint x, gint y, AtkCoordType coords)
    679 {
    680     // FIXME: Use the AtkCoordType
    681     // TODO: Is it correct to ignore range.length?
    682     IntPoint pos(x, y);
    683     PlainTextRange range = core(text)->doAXRangeForPosition(pos);
    684     return range.start;
    685 }
    686 
    687 gint webkitAccessibleTextGetNSelections(AtkText* text)
    688 {
    689     AccessibilityObject* coreObject = core(text);
    690     VisibleSelection selection = coreObject->selection();
    691 
    692     // Only range selections are needed for the purpose of this method
    693     if (!selection.isRange())
    694         return 0;
    695 
    696     // We don't support multiple selections for now, so there's only
    697     // two possibilities
    698     // Also, we don't want to do anything if the selection does not
    699     // belong to the currently selected object. We have to check since
    700     // there's no way to get the selection for a given object, only
    701     // the global one (the API is a bit confusing)
    702     return selectionBelongsToObject(coreObject, selection) ? 1 : 0;
    703 }
    704 
    705 gchar* webkitAccessibleTextGetSelection(AtkText* text, gint selectionNum, gint* startOffset, gint* endOffset)
    706 {
    707     // Default values, unless the contrary is proved
    708     *startOffset = *endOffset = 0;
    709 
    710     // WebCore does not support multiple selection, so anything but 0 does not make sense for now.
    711     if (selectionNum)
    712         return 0;
    713 
    714     // Get the offsets of the selection for the selected object
    715     AccessibilityObject* coreObject = core(text);
    716     VisibleSelection selection = coreObject->selection();
    717     getSelectionOffsetsForObject(coreObject, selection, *startOffset, *endOffset);
    718 
    719     // Return 0 instead of "", as that's the expected result for
    720     // this AtkText method when there's no selection
    721     if (*startOffset == *endOffset)
    722         return 0;
    723 
    724     return webkitAccessibleTextGetText(text, *startOffset, *endOffset);
    725 }
    726 
    727 gboolean webkitAccessibleTextAddSelection(AtkText*, gint, gint)
    728 {
    729     notImplemented();
    730     return FALSE;
    731 }
    732 
    733 gboolean webkitAccessibleTextRemoveSelection(AtkText* text, gint selectionNum)
    734 {
    735     // WebCore does not support multiple selection, so anything but 0 does not make sense for now.
    736     if (selectionNum)
    737         return FALSE;
    738 
    739     // Do nothing if current selection doesn't belong to the object
    740     if (!webkitAccessibleTextGetNSelections(text))
    741         return FALSE;
    742 
    743     // Set a new 0-sized selection to the caret position, in order
    744     // to simulate selection removal (GAIL style)
    745     gint caretOffset = webkitAccessibleTextGetCaretOffset(text);
    746     return webkitAccessibleTextSetSelection(text, selectionNum, caretOffset, caretOffset);
    747 }
    748 
    749 gboolean webkitAccessibleTextSetSelection(AtkText* text, gint selectionNum, gint startOffset, gint endOffset)
    750 {
    751     // WebCore does not support multiple selection, so anything but 0 does not make sense for now.
    752     if (selectionNum)
    753         return FALSE;
    754 
    755     AccessibilityObject* coreObject = core(text);
    756     if (!coreObject->isAccessibilityRenderObject())
    757         return FALSE;
    758 
    759     // Consider -1 and out-of-bound values and correct them to length
    760     gint textCount = webkitAccessibleTextGetCharacterCount(text);
    761     if (startOffset < 0 || startOffset > textCount)
    762         startOffset = textCount;
    763     if (endOffset < 0 || endOffset > textCount)
    764         endOffset = textCount;
    765 
    766     // We need to adjust the offsets for the list item marker.
    767     RenderObject* renderer = coreObject->renderer();
    768     if (renderer && renderer->isListItem()) {
    769         String markerText = toRenderListItem(renderer)->markerTextWithSuffix();
    770         int markerLength = markerText.length();
    771         if (startOffset < markerLength || endOffset < markerLength)
    772             return FALSE;
    773 
    774         startOffset -= markerLength;
    775         endOffset -= markerLength;
    776     }
    777 
    778     PlainTextRange textRange(startOffset, endOffset - startOffset);
    779     VisiblePositionRange range = coreObject->visiblePositionRangeForRange(textRange);
    780     if (range.isNull())
    781         return FALSE;
    782 
    783     coreObject->setSelectedVisiblePositionRange(range);
    784     return TRUE;
    785 }
    786 
    787 gboolean webkitAccessibleTextSetCaretOffset(AtkText* text, gint offset)
    788 {
    789     AccessibilityObject* coreObject = core(text);
    790 
    791     if (!coreObject->isAccessibilityRenderObject())
    792         return FALSE;
    793 
    794     RenderObject* renderer = coreObject->renderer();
    795     if (renderer && renderer->isListItem()) {
    796         String markerText = toRenderListItem(renderer)->markerTextWithSuffix();
    797         int markerLength = markerText.length();
    798         if (offset < markerLength)
    799             return FALSE;
    800 
    801         // We need to adjust the offset for list items.
    802         offset -= markerLength;
    803     }
    804 
    805     PlainTextRange textRange(offset, 0);
    806     VisiblePositionRange range = coreObject->visiblePositionRangeForRange(textRange);
    807     if (range.isNull())
    808         return FALSE;
    809 
    810     coreObject->setSelectedVisiblePositionRange(range);
    811     return TRUE;
    812 }
  • trunk/Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceText.h

    r105745 r105791  
    2626
    2727void webkitAccessibleTextInterfaceInit(AtkTextIface*);
    28 gchar* webkitAccessibleTextGetText(AtkText*, gint startOffset, gint endOffset);
    29 gchar* webkitAccessibleTextGetTextAfterOffset(AtkText*, gint offset, AtkTextBoundary, gint* startOffset, gint* endOffset);
    30 gchar* webkitAccessibleTextGetTextAtOffset(AtkText*, gint offset, AtkTextBoundary, gint* startOffset, gint* endOffset);
    31 gchar* webkitAccessibleTextGetTextBeforeOffset(AtkText*, gint offset, AtkTextBoundary, gint* startOffset, gint* endOffset);
    32 gunichar webkitAccessibleTextGetCharacterAtOffset(AtkText*, gint offset);
    33 gint webkitAccessibleTextGetCaretOffset(AtkText*);
    34 AtkAttributeSet* webkitAccessibleTextGetRunAttributes(AtkText*, gint offset, gint* startOffset, gint* endOffset);
    35 AtkAttributeSet* webkitAccessibleTextGetDefaultAttributes(AtkText*);
    36 void webkitAccessibleTextGetCharacterExtents(AtkText*, gint offset, gint* x, gint* y, gint* width, gint* height, AtkCoordType);
    37 void webkitAccessibleTextGetRangeExtents(AtkText*, gint startOffset, gint endOffset, AtkCoordType, AtkTextRectangle*);
    38 gint webkitAccessibleTextGetCharacterCount(AtkText*);
    39 gint webkitAccessibleTextGetOffsetAtPoint(AtkText*, gint x, gint y, AtkCoordType);
    40 gint webkitAccessibleTextGetNSelections(AtkText*);
    41 gchar* webkitAccessibleTextGetSelection(AtkText*, gint selectionNum, gint* startOffset, gint* endOffset);
    42 gboolean webkitAccessibleTextAddSelection(AtkText*, gint startOffset, gint endOffset);
    43 gboolean webkitAccessibleTextSetSelection(AtkText*, gint selectionNum, gint startOffset, gint endOffset);
    44 gboolean webkitAccessibleTextRemoveSelection(AtkText*, gint selectionNum);
    45 gboolean webkitAccessibleTextSetCaretOffset(AtkText*, gint offset);
    4628
    4729#endif // WebKitAccessibleInterfaceText_h
  • trunk/Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceValue.cpp

    r105740 r105791  
    3434}
    3535
    36 void webkitAccessibleValueInterfaceInit(AtkValueIface* iface)
    37 {
    38     iface->get_current_value = webkitAccessibleValueGetCurrentValue;
    39     iface->get_maximum_value = webkitAccessibleValueGetMaximumValue;
    40     iface->get_minimum_value = webkitAccessibleValueGetMinimumValue;
    41     iface->set_current_value = webkitAccessibleValueSetCurrentValue;
    42     iface->get_minimum_increment = webkitAccessibleValueGetMinimumIncrement;
    43 }
    44 
    45 void webkitAccessibleValueGetCurrentValue(AtkValue* value, GValue* gValue)
     36static void webkitAccessibleValueGetCurrentValue(AtkValue* value, GValue* gValue)
    4637{
    4738    memset(gValue,  0, sizeof(GValue));
     
    5041}
    5142
    52 void webkitAccessibleValueGetMaximumValue(AtkValue* value, GValue* gValue)
     43static void webkitAccessibleValueGetMaximumValue(AtkValue* value, GValue* gValue)
    5344{
    5445    memset(gValue,  0, sizeof(GValue));
     
    5748}
    5849
    59 void webkitAccessibleValueGetMinimumValue(AtkValue* value, GValue* gValue)
     50static void webkitAccessibleValueGetMinimumValue(AtkValue* value, GValue* gValue)
    6051{
    6152    memset(gValue,  0, sizeof(GValue));
     
    6455}
    6556
    66 gboolean webkitAccessibleValueSetCurrentValue(AtkValue* value, const GValue* gValue)
     57static gboolean webkitAccessibleValueSetCurrentValue(AtkValue* value, const GValue* gValue)
    6758{
    6859    if (!G_VALUE_HOLDS_DOUBLE(gValue) && !G_VALUE_HOLDS_INT(gValue))
     
    8172}
    8273
    83 void webkitAccessibleValueGetMinimumIncrement(AtkValue* value, GValue* gValue)
     74static void webkitAccessibleValueGetMinimumIncrement(AtkValue* value, GValue* gValue)
    8475{
    8576    memset(gValue,  0, sizeof(GValue));
     
    8980    g_value_set_double(gValue, 0.0);
    9081}
     82
     83void webkitAccessibleValueInterfaceInit(AtkValueIface* iface)
     84{
     85    iface->get_current_value = webkitAccessibleValueGetCurrentValue;
     86    iface->get_maximum_value = webkitAccessibleValueGetMaximumValue;
     87    iface->get_minimum_value = webkitAccessibleValueGetMinimumValue;
     88    iface->set_current_value = webkitAccessibleValueSetCurrentValue;
     89    iface->get_minimum_increment = webkitAccessibleValueGetMinimumIncrement;
     90}
  • trunk/Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceValue.h

    r105740 r105791  
    2424
    2525void webkitAccessibleValueInterfaceInit(AtkValueIface*);
    26 void webkitAccessibleValueGetCurrentValue(AtkValue*, GValue*);
    27 void webkitAccessibleValueGetMaximumValue(AtkValue*, GValue*);
    28 void webkitAccessibleValueGetMinimumValue(AtkValue*, GValue*);
    29 gboolean webkitAccessibleValueSetCurrentValue(AtkValue*, const GValue*);
    30 void webkitAccessibleValueGetMinimumIncrement(AtkValue*, GValue*);
    3126
    3227#endif // WebKitAccessibleInterfaceValue_h
  • trunk/Source/WebCore/accessibility/gtk/WebKitAccessibleWrapperAtk.cpp

    r105754 r105791  
    105105            AtkObject* atkObject = label->wrapper();
    106106            if (ATK_IS_TEXT(atkObject))
    107                 return webkitAccessibleTextGetText(ATK_TEXT(atkObject), 0, -1);
     107                return atk_text_get_text(ATK_TEXT(atkObject), 0, -1);
    108108        }
    109109
Note: See TracChangeset for help on using the changeset viewer.