Changeset 105749 in webkit


Ignore:
Timestamp:
Jan 24, 2012 10:28:22 AM (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.

New files for the implementation of the AtkTable interface,
containing the related code from WebKitAccessibleWrapperAtk.cpp.

  • accessibility/gtk/WebKitAccessibleInterfaceTable.cpp: Added.

(core):
(cell):
(cellIndex):
(cellAtIndex):
(webkitAccessibleTableInterfaceInit):
(webkitAccessibleTableRefAt):
(webkitAccessibleTableGetIndexAt):
(webkitAccessibleTableGetColumnAtIndex):
(webkitAccessibleTableGetRowAtIndex):
(webkitAccessibleTableGetNColumns):
(webkitAccessibleTableGetNRows):
(webkitAccessibleTableGetColumnExtentAt):
(webkitAccessibleTableGetRowExtentAt):
(webkitAccessibleTableGetColumnHeader):
(webkitAccessibleTableGetRowHeader):
(webkitAccessibleTableGetCaption):
(webkitAccessibleTableGetColumnDescription):
(webkitAccessibleTableGetRowDescription):

  • accessibility/gtk/WebKitAccessibleInterfaceTable.h: Added.
  • accessibility/gtk/WebKitAccessibleWrapperAtk.cpp: Remove code

related to the implementation of the AtkTable interface.

Add new files to build files.

  • GNUmakefile.list.am: Add WebKitAccessibleInterfaceTable.[h|cpp].
  • WebCore.gypi: Ditto.
Location:
trunk/Source/WebCore
Files:
2 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r105748 r105749  
     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        New files for the implementation of the AtkTable interface,
     9        containing the related code from WebKitAccessibleWrapperAtk.cpp.
     10
     11        * accessibility/gtk/WebKitAccessibleInterfaceTable.cpp: Added.
     12        (core):
     13        (cell):
     14        (cellIndex):
     15        (cellAtIndex):
     16        (webkitAccessibleTableInterfaceInit):
     17        (webkitAccessibleTableRefAt):
     18        (webkitAccessibleTableGetIndexAt):
     19        (webkitAccessibleTableGetColumnAtIndex):
     20        (webkitAccessibleTableGetRowAtIndex):
     21        (webkitAccessibleTableGetNColumns):
     22        (webkitAccessibleTableGetNRows):
     23        (webkitAccessibleTableGetColumnExtentAt):
     24        (webkitAccessibleTableGetRowExtentAt):
     25        (webkitAccessibleTableGetColumnHeader):
     26        (webkitAccessibleTableGetRowHeader):
     27        (webkitAccessibleTableGetCaption):
     28        (webkitAccessibleTableGetColumnDescription):
     29        (webkitAccessibleTableGetRowDescription):
     30        * accessibility/gtk/WebKitAccessibleInterfaceTable.h: Added.
     31        * accessibility/gtk/WebKitAccessibleWrapperAtk.cpp: Remove code
     32        related to the implementation of the AtkTable interface.
     33
     34        Add new files to build files.
     35
     36        * GNUmakefile.list.am: Add WebKitAccessibleInterfaceTable.[h|cpp].
     37        * WebCore.gypi: Ditto.
     38
    1392012-01-24  Vsevolod Vlasov  <vsevik@chromium.org>
    240
  • trunk/Source/WebCore/GNUmakefile.list.am

    r105745 r105749  
    44404440        Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceSelection.cpp \
    44414441        Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceSelection.h \
     4442        Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceTable.cpp \
     4443        Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceTable.h \
    44424444        Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceText.cpp \
    44434445        Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceText.h \
  • trunk/Source/WebCore/WebCore.gypi

    r105745 r105749  
    13621362            'accessibility/gtk/WebKitAccessibleInterfaceSelection.cpp',
    13631363            'accessibility/gtk/WebKitAccessibleInterfaceSelection.h',
     1364            'accessibility/gtk/WebKitAccessibleInterfaceTable.cpp',
     1365            'accessibility/gtk/WebKitAccessibleInterfaceTable.h',
    13641366            'accessibility/gtk/WebKitAccessibleInterfaceText.cpp',
    13651367            'accessibility/gtk/WebKitAccessibleInterfaceText.h',
  • trunk/Source/WebCore/accessibility/gtk/WebKitAccessibleWrapperAtk.cpp

    r105745 r105749  
    7272#include "WebKitAccessibleInterfaceImage.h"
    7373#include "WebKitAccessibleInterfaceSelection.h"
     74#include "WebKitAccessibleInterfaceTable.h"
    7475#include "WebKitAccessibleInterfaceText.h"
    7576#include "WebKitAccessibleInterfaceValue.h"
     
    116117
    117118    return core(WEBKIT_ACCESSIBLE(object));
    118 }
    119 
    120 static AccessibilityObject* core(AtkTable* table)
    121 {
    122     return core(ATK_OBJECT(table));
    123119}
    124120
     
    794790}
    795791
    796 // Table
    797 
    798 static AccessibilityTableCell* cell(AtkTable* table, guint row, guint column)
    799 {
    800     AccessibilityObject* accTable = core(table);
    801     if (accTable->isAccessibilityRenderObject())
    802         return static_cast<AccessibilityTable*>(accTable)->cellForColumnAndRow(column, row);
    803     return 0;
    804 }
    805 
    806 static gint cellIndex(AccessibilityTableCell* axCell, AccessibilityTable* axTable)
    807 {
    808     // Calculate the cell's index as if we had a traditional Gtk+ table in
    809     // which cells are all direct children of the table, arranged row-first.
    810     AccessibilityObject::AccessibilityChildrenVector allCells;
    811     axTable->cells(allCells);
    812     AccessibilityObject::AccessibilityChildrenVector::iterator position;
    813     position = std::find(allCells.begin(), allCells.end(), axCell);
    814     if (position == allCells.end())
    815         return -1;
    816     return position - allCells.begin();
    817 }
    818 
    819 static AccessibilityTableCell* cellAtIndex(AtkTable* table, gint index)
    820 {
    821     AccessibilityObject* accTable = core(table);
    822     if (accTable->isAccessibilityRenderObject()) {
    823         AccessibilityObject::AccessibilityChildrenVector allCells;
    824         static_cast<AccessibilityTable*>(accTable)->cells(allCells);
    825         if (0 <= index && static_cast<unsigned>(index) < allCells.size()) {
    826             AccessibilityObject* accCell = allCells.at(index).get();
    827             return static_cast<AccessibilityTableCell*>(accCell);
    828         }
    829     }
    830     return 0;
    831 }
    832 
    833 static AtkObject* webkit_accessible_table_ref_at(AtkTable* table, gint row, gint column)
    834 {
    835     AccessibilityTableCell* axCell = cell(table, row, column);
    836     if (!axCell)
    837         return 0;
    838     return axCell->wrapper();
    839 }
    840 
    841 static gint webkit_accessible_table_get_index_at(AtkTable* table, gint row, gint column)
    842 {
    843     AccessibilityTableCell* axCell = cell(table, row, column);
    844     AccessibilityTable* axTable = static_cast<AccessibilityTable*>(core(table));
    845     return cellIndex(axCell, axTable);
    846 }
    847 
    848 static gint webkit_accessible_table_get_column_at_index(AtkTable* table, gint index)
    849 {
    850     AccessibilityTableCell* axCell = cellAtIndex(table, index);
    851     if (axCell) {
    852         pair<int, int> columnRange;
    853         axCell->columnIndexRange(columnRange);
    854         return columnRange.first;
    855     }
    856     return -1;
    857 }
    858 
    859 static gint webkit_accessible_table_get_row_at_index(AtkTable* table, gint index)
    860 {
    861     AccessibilityTableCell* axCell = cellAtIndex(table, index);
    862     if (axCell) {
    863         pair<int, int> rowRange;
    864         axCell->rowIndexRange(rowRange);
    865         return rowRange.first;
    866     }
    867     return -1;
    868 }
    869 
    870 static gint webkit_accessible_table_get_n_columns(AtkTable* table)
    871 {
    872     AccessibilityObject* accTable = core(table);
    873     if (accTable->isAccessibilityRenderObject())
    874         return static_cast<AccessibilityTable*>(accTable)->columnCount();
    875     return 0;
    876 }
    877 
    878 static gint webkit_accessible_table_get_n_rows(AtkTable* table)
    879 {
    880     AccessibilityObject* accTable = core(table);
    881     if (accTable->isAccessibilityRenderObject())
    882         return static_cast<AccessibilityTable*>(accTable)->rowCount();
    883     return 0;
    884 }
    885 
    886 static gint webkit_accessible_table_get_column_extent_at(AtkTable* table, gint row, gint column)
    887 {
    888     AccessibilityTableCell* axCell = cell(table, row, column);
    889     if (axCell) {
    890         pair<int, int> columnRange;
    891         axCell->columnIndexRange(columnRange);
    892         return columnRange.second;
    893     }
    894     return 0;
    895 }
    896 
    897 static gint webkit_accessible_table_get_row_extent_at(AtkTable* table, gint row, gint column)
    898 {
    899     AccessibilityTableCell* axCell = cell(table, row, column);
    900     if (axCell) {
    901         pair<int, int> rowRange;
    902         axCell->rowIndexRange(rowRange);
    903         return rowRange.second;
    904     }
    905     return 0;
    906 }
    907 
    908 static AtkObject* webkit_accessible_table_get_column_header(AtkTable* table, gint column)
    909 {
    910     AccessibilityObject* accTable = core(table);
    911     if (accTable->isAccessibilityRenderObject()) {
    912         AccessibilityObject::AccessibilityChildrenVector allColumnHeaders;
    913         static_cast<AccessibilityTable*>(accTable)->columnHeaders(allColumnHeaders);
    914         unsigned columnCount = allColumnHeaders.size();
    915         for (unsigned k = 0; k < columnCount; ++k) {
    916             pair<int, int> columnRange;
    917             AccessibilityTableCell* cell = static_cast<AccessibilityTableCell*>(allColumnHeaders.at(k).get());
    918             cell->columnIndexRange(columnRange);
    919             if (columnRange.first <= column && column < columnRange.first + columnRange.second)
    920                 return allColumnHeaders[k]->wrapper();
    921         }
    922     }
    923     return 0;
    924 }
    925 
    926 static AtkObject* webkit_accessible_table_get_row_header(AtkTable* table, gint row)
    927 {
    928     AccessibilityObject* accTable = core(table);
    929     if (accTable->isAccessibilityRenderObject()) {
    930         AccessibilityObject::AccessibilityChildrenVector allRowHeaders;
    931         static_cast<AccessibilityTable*>(accTable)->rowHeaders(allRowHeaders);
    932         unsigned rowCount = allRowHeaders.size();
    933         for (unsigned k = 0; k < rowCount; ++k) {
    934             pair<int, int> rowRange;
    935             AccessibilityTableCell* cell = static_cast<AccessibilityTableCell*>(allRowHeaders.at(k).get());
    936             cell->rowIndexRange(rowRange);
    937             if (rowRange.first <= row && row < rowRange.first + rowRange.second)
    938                 return allRowHeaders[k]->wrapper();
    939         }
    940     }
    941     return 0;
    942 }
    943 
    944 static AtkObject* webkit_accessible_table_get_caption(AtkTable* table)
    945 {
    946     AccessibilityObject* accTable = core(table);
    947     if (accTable->isAccessibilityRenderObject()) {
    948         Node* node = accTable->node();
    949         if (node && node->hasTagName(HTMLNames::tableTag)) {
    950             HTMLTableCaptionElement* caption = static_cast<HTMLTableElement*>(node)->caption();
    951             if (caption)
    952                 return AccessibilityObject::firstAccessibleObjectFromNode(caption->renderer()->node())->wrapper();
    953         }
    954     }
    955     return 0;
    956 }
    957 
    958 static const gchar* webkit_accessible_table_get_column_description(AtkTable* table, gint column)
    959 {
    960     AtkObject* columnHeader = atk_table_get_column_header(table, column);
    961     if (columnHeader && ATK_IS_TEXT(columnHeader))
    962         return webkitAccessibleTextGetText(ATK_TEXT(columnHeader), 0, -1);
    963 
    964     return 0;
    965 }
    966 
    967 static const gchar* webkit_accessible_table_get_row_description(AtkTable* table, gint row)
    968 {
    969     AtkObject* rowHeader = atk_table_get_row_header(table, row);
    970     if (rowHeader && ATK_IS_TEXT(rowHeader))
    971         return webkitAccessibleTextGetText(ATK_TEXT(rowHeader), 0, -1);
    972 
    973     return 0;
    974 }
    975 
    976 static void atk_table_interface_init(AtkTableIface* iface)
    977 {
    978     iface->ref_at = webkit_accessible_table_ref_at;
    979     iface->get_index_at = webkit_accessible_table_get_index_at;
    980     iface->get_column_at_index = webkit_accessible_table_get_column_at_index;
    981     iface->get_row_at_index = webkit_accessible_table_get_row_at_index;
    982     iface->get_n_columns = webkit_accessible_table_get_n_columns;
    983     iface->get_n_rows = webkit_accessible_table_get_n_rows;
    984     iface->get_column_extent_at = webkit_accessible_table_get_column_extent_at;
    985     iface->get_row_extent_at = webkit_accessible_table_get_row_extent_at;
    986     iface->get_column_header = webkit_accessible_table_get_column_header;
    987     iface->get_row_header = webkit_accessible_table_get_row_header;
    988     iface->get_caption = webkit_accessible_table_get_caption;
    989     iface->get_column_description = webkit_accessible_table_get_column_description;
    990     iface->get_row_description = webkit_accessible_table_get_row_description;
    991 }
    992 
    993792static const GInterfaceInfo AtkInterfacesInitFunctions[] = {
    994793    {reinterpret_cast<GInterfaceInitFunc>(webkitAccessibleActionInterfaceInit), 0, 0},
     
    998797    {reinterpret_cast<GInterfaceInitFunc>(webkitAccessibleComponentInterfaceInit), 0, 0},
    999798    {reinterpret_cast<GInterfaceInitFunc>(webkitAccessibleImageInterfaceInit), 0, 0},
    1000     {(GInterfaceInitFunc)atk_table_interface_init,
    1001      (GInterfaceFinalizeFunc) 0, 0},
     799    {reinterpret_cast<GInterfaceInitFunc>(webkitAccessibleTableInterfaceInit), 0, 0},
    1002800    {reinterpret_cast<GInterfaceInitFunc>(webkitAccessibleHypertextInterfaceInit), 0, 0},
    1003801    {reinterpret_cast<GInterfaceInitFunc>(webkitAccessibleHyperlinkImplInterfaceInit), 0, 0},
Note: See TracChangeset for help on using the changeset viewer.