Changeset 83064 in webkit


Ignore:
Timestamp:
Apr 6, 2011, 9:50:25 AM (14 years ago)
Author:
mario@webkit.org
Message:

2011-04-06 Mario Sanchez Prada <msanchez@igalia.com>

Reviewed by Chris Fleizach.

[GTK] Do not reference AccessibilityRenderObject from platform dependent code
https://bugs.webkit.org/show_bug.cgi?id=57955

Do not reference AccessibilityRenderObject from platform specific code

Added new virtual functions to AccessibilityObject.h and removed
explicit references to AccessibilityRenderObject from GTK code.

  • accessibility/AccessibilityObject.h: (WebCore::AccessibilityObject::renderer): New virtual method, returning 0 by default. Overriden by AccessibilityRenderObject. (WebCore::AccessibilityObject::correspondingLabelForControlElement): New virtual method, returning 0 by default. It complements the already present method correspondingControlForLabelElement().
  • accessibility/AccessibilityRenderObject.h: (WebCore::AccessibilityRenderObject::renderer): Made virtual.
  • accessibility/gtk/AXObjectCacheAtk.cpp: (WebCore::emitTextChanged): Reference AccessibilityObject, instead of AccessibilityRenderObject. (WebCore::AXObjectCache::nodeTextChangePlatformNotification): Ditto.
  • accessibility/gtk/AccessibilityObjectWrapperAtk.cpp: (webkit_accessible_get_name): Do not reference AccessibilityRenderObject. (webkit_accessible_get_description): Ditto. (setAtkRelationSetFromCoreObject): Ditto. (optionFromList): Ditto. (optionFromSelection): Ditto. (webkit_accessible_selection_clear_selection): Ditto. (webkit_accessible_selection_get_selection_count): Ditto. (webkit_accessible_selection_select_all_selection): Ditto. (textForObject): Ditto. (webkit_accessible_text_get_text): Ditto. (getPangoLayoutForAtk): Ditto. (webkit_accessible_text_get_caret_offset): Ditto. (baselinePositionForRenderObject): Ditto. (getAttributeSetForAccessibilityObject): Ditto. (accessibilityObjectLength): Ditto. (getSelectionOffsetsForObject): Ditto. (webkit_accessible_text_set_selection): Ditto. (webkit_accessible_text_set_caret_offset): Ditto. (webkit_accessible_table_get_caption): Ditto. (getInterfaceMaskFromObject): Ditto.
  • accessibility/gtk/WebKitAccessibleHyperlink.cpp: (getRangeLengthForObject): Ditto.

Removed unused renderer() method from AccessibilityMenuList.

  • accessibility/AccessibilityMenuList.h: Removed unused method.
  • accessibility/AccessibilityMenuList.cpp: Removed unused method.
Location:
trunk/Source/WebCore
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r83062 r83064  
     12011-04-06  Mario Sanchez Prada  <msanchez@igalia.com>
     2
     3        Reviewed by Chris Fleizach.
     4
     5        [GTK] Do not reference AccessibilityRenderObject from platform dependent code
     6        https://bugs.webkit.org/show_bug.cgi?id=57955
     7
     8        Do not reference AccessibilityRenderObject from platform specific code
     9
     10        Added new virtual functions to AccessibilityObject.h and removed
     11        explicit references to AccessibilityRenderObject from GTK code.
     12
     13        * accessibility/AccessibilityObject.h:
     14        (WebCore::AccessibilityObject::renderer): New virtual method,
     15        returning 0 by default. Overriden by AccessibilityRenderObject.
     16        (WebCore::AccessibilityObject::correspondingLabelForControlElement):
     17        New virtual method, returning 0 by default. It complements the
     18        already present method correspondingControlForLabelElement().
     19
     20        * accessibility/AccessibilityRenderObject.h:
     21        (WebCore::AccessibilityRenderObject::renderer): Made virtual.
     22
     23        * accessibility/gtk/AXObjectCacheAtk.cpp:
     24        (WebCore::emitTextChanged): Reference  AccessibilityObject,
     25        instead of AccessibilityRenderObject.
     26        (WebCore::AXObjectCache::nodeTextChangePlatformNotification):
     27        Ditto.
     28
     29        * accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:
     30        (webkit_accessible_get_name): Do not reference
     31        AccessibilityRenderObject.
     32        (webkit_accessible_get_description): Ditto.
     33        (setAtkRelationSetFromCoreObject): Ditto.
     34        (optionFromList): Ditto.
     35        (optionFromSelection): Ditto.
     36        (webkit_accessible_selection_clear_selection): Ditto.
     37        (webkit_accessible_selection_get_selection_count): Ditto.
     38        (webkit_accessible_selection_select_all_selection): Ditto.
     39        (textForObject): Ditto.
     40        (webkit_accessible_text_get_text): Ditto.
     41        (getPangoLayoutForAtk): Ditto.
     42        (webkit_accessible_text_get_caret_offset): Ditto.
     43        (baselinePositionForRenderObject): Ditto.
     44        (getAttributeSetForAccessibilityObject): Ditto.
     45        (accessibilityObjectLength): Ditto.
     46        (getSelectionOffsetsForObject): Ditto.
     47        (webkit_accessible_text_set_selection): Ditto.
     48        (webkit_accessible_text_set_caret_offset): Ditto.
     49        (webkit_accessible_table_get_caption): Ditto.
     50        (getInterfaceMaskFromObject): Ditto.
     51
     52        * accessibility/gtk/WebKitAccessibleHyperlink.cpp:
     53        (getRangeLengthForObject): Ditto.
     54
     55        Removed unused renderer() method from AccessibilityMenuList.
     56
     57        * accessibility/AccessibilityMenuList.h: Removed unused method.
     58        * accessibility/AccessibilityMenuList.cpp: Removed unused method.
     59
    1602011-04-06  Alexander Pavlov  <apavlov@chromium.org>
    261
  • trunk/Source/WebCore/accessibility/AccessibilityMenuList.cpp

    r64874 r83064  
    3636    : AccessibilityRenderObject(renderer)
    3737{
    38 }
    39 
    40 RenderMenuList* AccessibilityMenuList::renderer() const
    41 {
    42     return toRenderMenuList(AccessibilityRenderObject::renderer());
    4338}
    4439
  • trunk/Source/WebCore/accessibility/AccessibilityMenuList.h

    r64874 r83064  
    4343    virtual bool press() const;
    4444
    45     RenderMenuList* renderer() const;
    46 
    4745private:
    4846    AccessibilityMenuList(RenderMenuList*);
  • trunk/Source/WebCore/accessibility/AccessibilityObject.h

    r82459 r83064  
    354354   
    355355    virtual Node* node() const { return 0; }
     356    virtual RenderObject* renderer() const { return 0; }
    356357    virtual bool accessibilityIsIgnored() const  { return true; }
    357358
     
    405406    virtual AccessibilityObject* titleUIElement() const { return 0; }
    406407    virtual bool exposesTitleUIElement() const { return true; }
     408    virtual AccessibilityObject* correspondingLabelForControlElement() const { return 0; }
    407409    virtual AccessibilityObject* correspondingControlForLabelElement() const { return 0; }
    408410    virtual AccessibilityObject* scrollBar(AccessibilityOrientation) const { return 0; }
  • trunk/Source/WebCore/accessibility/AccessibilityRenderObject.h

    r75179 r83064  
    162162   
    163163    void setRenderer(RenderObject* renderer) { m_renderer = renderer; }
    164     RenderObject* renderer() const { return m_renderer; }
     164    virtual RenderObject* renderer() const { return m_renderer; }
    165165    RenderBoxModelObject* renderBoxModelObject() const;
    166166    virtual Node* node() const;
  • trunk/Source/WebCore/accessibility/gtk/AXObjectCacheAtk.cpp

    r82095 r83064  
    2323#include "AccessibilityObject.h"
    2424#include "AccessibilityObjectWrapperAtk.h"
    25 #include "AccessibilityRenderObject.h"
    2625#include "GOwnPtr.h"
    2726#include "Range.h"
     
    158157}
    159158
    160 static void emitTextChanged(AccessibilityRenderObject* object, AXObjectCache::AXTextChange textChange, unsigned offset, unsigned count)
     159static void emitTextChanged(AccessibilityObject* object, AXObjectCache::AXTextChange textChange, unsigned offset, unsigned count)
    161160{
    162161    // Get the axObject for the parent object
     
    188187    Node* node = object->node();
    189188    RefPtr<Range> range = Range::create(node->document(),  Position(node->parentNode(), 0), Position(node, 0));
    190     emitTextChanged(toAccessibilityRenderObject(object), textChange, offset + TextIterator::rangeLength(range.get()), count);
     189    emitTextChanged(object, textChange, offset + TextIterator::rangeLength(range.get()), count);
    191190}
    192191
  • trunk/Source/WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp

    r82698 r83064  
    3838#include "AccessibilityListBox.h"
    3939#include "AccessibilityListBoxOption.h"
    40 #include "AccessibilityRenderObject.h"
    4140#include "AccessibilityTable.h"
    4241#include "AccessibilityTableCell.h"
     
    172171        return returnString(coreObject->stringValue());
    173172
    174     AccessibilityRenderObject* renderObject = static_cast<AccessibilityRenderObject*>(coreObject);
    175173    if (coreObject->isControl()) {
    176         AccessibilityObject* label = renderObject->correspondingLabelForControlElement();
     174        AccessibilityObject* label = coreObject->correspondingLabelForControlElement();
    177175        if (label) {
    178176            AtkObject* atkObject = label->wrapper();
     
    182180
    183181        // Try text under the node.
    184         String textUnder = renderObject->textUnderElement();
     182        String textUnder = coreObject->textUnderElement();
    185183        if (textUnder.length())
    186184            return returnString(textUnder);
    187185    }
    188186
    189     if (renderObject->isImage() || renderObject->isInputImage()) {
    190         Node* node = renderObject->renderer()->node();
     187    if (coreObject->isImage() || coreObject->isInputImage()) {
     188        Node* node = coreObject->node();
    191189        if (node && node->isHTMLElement()) {
    192190            // Get the attribute rather than altText String so as not to fall back on title.
     
    198196
    199197    // Fallback for the webArea object: just return the document's title.
    200     if (renderObject->isWebArea()) {
     198    if (coreObject->isWebArea()) {
    201199        Document* document = coreObject->document();
    202200        if (document)
     
    212210    Node* node = 0;
    213211    if (coreObject->isAccessibilityRenderObject())
    214         node = static_cast<AccessibilityRenderObject*>(coreObject)->renderer()->node();
     212        node = coreObject->node();
    215213    if (!node || !node->isHTMLElement() || coreObject->ariaRoleAttribute() != UnknownRole)
    216214        return returnString(coreObject->accessibilityDescription());
     
    234232static void setAtkRelationSetFromCoreObject(AccessibilityObject* coreObject, AtkRelationSet* relationSet)
    235233{
    236     AccessibilityRenderObject* accObject = static_cast<AccessibilityRenderObject*>(coreObject);
    237     if (accObject->isControl()) {
    238         AccessibilityObject* label = accObject->correspondingLabelForControlElement();
     234    if (coreObject->isControl()) {
     235        AccessibilityObject* label = coreObject->correspondingLabelForControlElement();
    239236        if (label)
    240237            atk_relation_set_add_relation_by_type(relationSet, ATK_RELATION_LABELLED_BY, label->wrapper());
    241238    } else {
    242         AccessibilityObject* control = accObject->correspondingControlForLabelElement();
     239        AccessibilityObject* control = coreObject->correspondingControlForLabelElement();
    243240        if (control)
    244241            atk_relation_set_add_relation_by_type(relationSet, ATK_RELATION_LABEL_FOR, control->wrapper());
     
    824821        return 0;
    825822
    826     AccessibilityRenderObject::AccessibilityChildrenVector options = listObject->children();
     823    AccessibilityObject::AccessibilityChildrenVector options = listObject->children();
    827824    if (i < static_cast<gint>(options.size()))
    828825        return options.at(i).get();
     
    839836        return 0;
    840837
    841     AccessibilityRenderObject::AccessibilityChildrenVector selectedItems;
     838    AccessibilityObject::AccessibilityChildrenVector selectedItems;
    842839    if (coreSelection->isListBox())
    843840        coreSelection->selectedChildren(selectedItems);
    844841    else if (coreSelection->isMenuList()) {
    845         RenderObject* renderer = toAccessibilityRenderObject(coreSelection)->renderer();
     842        RenderObject* renderer = coreSelection->renderer();
    846843        if (!renderer)
    847844            return 0;
     
    884881        return false;
    885882
    886     AccessibilityRenderObject::AccessibilityChildrenVector selectedItems;
     883    AccessibilityObject::AccessibilityChildrenVector selectedItems;
    887884    if (coreSelection->isListBox() || coreSelection->isMenuList()) {
    888885        // Set the list of selected items to an empty list; then verify that it worked.
     
    914911
    915912    if (coreSelection->isListBox()) {
    916         AccessibilityRenderObject::AccessibilityChildrenVector selectedItems;
     913        AccessibilityObject::AccessibilityChildrenVector selectedItems;
    917914        coreSelection->selectedChildren(selectedItems);
    918915        return static_cast<gint>(selectedItems.size());
     
    920917
    921918    if (coreSelection->isMenuList()) {
    922         RenderObject* renderer = toAccessibilityRenderObject(coreSelection)->renderer();
     919        RenderObject* renderer = coreSelection->renderer();
    923920        if (!renderer)
    924921            return 0;
     
    969966        return false;
    970967
    971     AccessibilityRenderObject::AccessibilityChildrenVector children = coreSelection->children();
     968    AccessibilityObject::AccessibilityChildrenVector children = coreSelection->children();
    972969    if (coreSelection->isListBox()) {
    973970        AccessibilityListBox* listBox = static_cast<AccessibilityListBox*>(coreSelection);
    974971        listBox->setSelectedChildren(children);
    975         AccessibilityRenderObject::AccessibilityChildrenVector selectedItems;
     972        AccessibilityObject::AccessibilityChildrenVector selectedItems;
    976973        listBox->selectedChildren(selectedItems);
    977974        return selectedItems.size() == children.size();
     
    10901087}
    10911088
    1092 gchar* textForObject(AccessibilityRenderObject* accObject)
     1089gchar* textForObject(AccessibilityObject* coreObject)
    10931090{
    10941091    GString* str = g_string_new(0);
    10951092
    10961093    // For text controls, we can get the text line by line.
    1097     if (accObject->isTextControl()) {
    1098         unsigned textLength = accObject->textLength();
     1094    if (coreObject->isTextControl()) {
     1095        unsigned textLength = coreObject->textLength();
    10991096        int lineNumber = 0;
    1100         PlainTextRange range = accObject->doAXRangeForLine(lineNumber);
     1097        PlainTextRange range = coreObject->doAXRangeForLine(lineNumber);
    11011098        while (range.length) {
    11021099            // When a line of text wraps in a text area, the final space is removed.
    11031100            if (range.start + range.length < textLength)
    11041101                range.length -= 1;
    1105             String lineText = accObject->doAXStringForRange(range);
     1102            String lineText = coreObject->doAXStringForRange(range);
    11061103            g_string_append(str, lineText.utf8().data());
    11071104            g_string_append(str, "\n");
    1108             range = accObject->doAXRangeForLine(++lineNumber);
     1105            range = coreObject->doAXRangeForLine(++lineNumber);
    11091106        }
    1110     } else if (accObject->isAccessibilityRenderObject()) {
    1111         GOwnPtr<gchar> rendererText(textForRenderer(accObject->renderer()));
     1107    } else if (coreObject->isAccessibilityRenderObject()) {
     1108        GOwnPtr<gchar> rendererText(textForRenderer(coreObject->renderer()));
    11121109        g_string_append(str, rendererText.get());
    11131110    }
     
    11381135    if (!ret.length()) {
    11391136        // This can happen at least with anonymous RenderBlocks (e.g. body text amongst paragraphs)
    1140         ret = String(textForObject(toAccessibilityRenderObject(coreObject)));
     1137        ret = String(textForObject(coreObject));
    11411138        if (!end)
    11421139            end = ret.length();
     
    11451142    // Prefix a item number/bullet if needed
    11461143    if (coreObject->roleValue() == ListItemRole) {
    1147         RenderObject* objRenderer = static_cast<AccessibilityRenderObject*>(coreObject)->renderer();
     1144        RenderObject* objRenderer = coreObject->renderer();
    11481145        if (objRenderer && objRenderer->isListItem()) {
    11491146            String markerText = toRenderListItem(objRenderer)->markerTextWithSuffix();
     
    11811178        return 0;
    11821179
    1183     AccessibilityRenderObject* accObject = static_cast<AccessibilityRenderObject*>(coreObject);
    1184     if (!accObject)
    1185         return 0;
    1186 
    11871180    // Create a string with the layout as it appears on the screen
    1188     PangoLayout* layout = gtk_widget_create_pango_layout(static_cast<GtkWidget*>(webView), textForObject(accObject));
     1181    PangoLayout* layout = gtk_widget_create_pango_layout(static_cast<GtkWidget*>(webView), textForObject(coreObject));
    11891182    g_object_set_data_full(G_OBJECT(textObject), "webkit-accessible-pango-layout", layout, g_object_unref);
    11901183    return layout;
     
    12321225        return 0;
    12331226
    1234     RenderObject* renderer = toAccessibilityRenderObject(coreObject)->renderer();
     1227    RenderObject* renderer = coreObject->renderer();
    12351228    if (renderer && renderer->isListItem()) {
    12361229        String markerText = toRenderListItem(renderer)->markerTextWithSuffix();
     
    12441237}
    12451238
    1246 static int baselinePositionForAccessibilityRenderObject(RenderObject* renderObject)
     1239static int baselinePositionForRenderObject(RenderObject* renderObject)
    12471240{
    12481241    // FIXME: This implementation of baselinePosition originates from RenderObject.cpp and was
     
    12581251        return 0;
    12591252
    1260     RenderObject* renderer = static_cast<const AccessibilityRenderObject*>(object)->renderer();
     1253    RenderObject* renderer = object->renderer();
    12611254    RenderStyle* style = renderer->style();
    12621255
     
    12831276    switch (style->verticalAlign()) {
    12841277    case SUB:
    1285         baselinePosition = -1 * baselinePositionForAccessibilityRenderObject(renderer);
     1278        baselinePosition = -1 * baselinePositionForRenderObject(renderer);
    12861279        break;
    12871280    case SUPER:
    1288         baselinePosition = baselinePositionForAccessibilityRenderObject(renderer);
     1281        baselinePosition = baselinePositionForRenderObject(renderer);
    12891282        break;
    12901283    case BASELINE:
     
    14321425    // for those cases when it's needed to take it into account
    14331426    // separately (as in getAccessibilityObjectForOffset)
    1434     RenderObject* renderer = static_cast<const AccessibilityRenderObject*>(object)->renderer();
     1427    RenderObject* renderer = object->renderer();
    14351428    if (renderer && renderer->isListMarker()) {
    14361429        RenderListMarker* marker = toRenderListMarker(renderer);
     
    16311624
    16321625    // We need to adjust the offsets for the list item marker.
    1633     RenderObject* renderer = toAccessibilityRenderObject(coreObject)->renderer();
     1626    RenderObject* renderer = coreObject->renderer();
    16341627    if (renderer && renderer->isListItem()) {
    16351628        String markerText = toRenderListItem(renderer)->markerTextWithSuffix();
     
    17051698
    17061699    // We need to adjust the offsets for the list item marker.
    1707     RenderObject* renderer = toAccessibilityRenderObject(coreObject)->renderer();
     1700    RenderObject* renderer = coreObject->renderer();
    17081701    if (renderer && renderer->isListItem()) {
    17091702        String markerText = toRenderListItem(renderer)->markerTextWithSuffix();
     
    17481741        return FALSE;
    17491742
    1750     RenderObject* renderer = toAccessibilityRenderObject(coreObject)->renderer();
     1743    RenderObject* renderer = coreObject->renderer();
    17511744    if (renderer && renderer->isListItem()) {
    17521745        String markerText = toRenderListItem(renderer)->markerTextWithSuffix();
     
    21182111    AccessibilityObject* accTable = core(table);
    21192112    if (accTable->isAccessibilityRenderObject()) {
    2120         Node* node = static_cast<AccessibilityRenderObject*>(accTable)->renderer()->node();
     2113        Node* node = accTable->node();
    21212114        if (node && node->hasTagName(HTMLNames::tableTag)) {
    21222115            HTMLTableCaptionElement* caption = static_cast<HTMLTableElement*>(node)->caption();
     
    24732466            // first accessible child has a text renderer
    24742467            if (role == ListItemRole) {
    2475                 AccessibilityObject::AccessibilityChildrenVector children = axRenderObject->children();
     2468                AccessibilityObject::AccessibilityChildrenVector children = coreObject->children();
    24762469                if (children.size()) {
    24772470                    AccessibilityObject* axRenderChild = children.at(0).get();
  • trunk/Source/WebCore/accessibility/gtk/WebKitAccessibleHyperlink.cpp

    r81587 r83064  
    2626#include "AccessibilityObject.h"
    2727#include "AccessibilityObjectWrapperAtk.h"
    28 #include "AccessibilityRenderObject.h"
    2928#include "NotImplemented.h"
    3029#include "Position.h"
     
    216215        return baseLength;
    217216
    218     RenderObject* renderer = static_cast<const AccessibilityRenderObject*>(markerObj)->renderer();
     217    RenderObject* renderer = markerObj->renderer();
    219218    if (!renderer || !renderer->isListMarker())
    220219        return baseLength;
Note: See TracChangeset for help on using the changeset viewer.