Changeset 83064 in webkit
- Timestamp:
- Apr 6, 2011, 9:50:25 AM (14 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r83062 r83064 1 2011-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 1 60 2011-04-06 Alexander Pavlov <apavlov@chromium.org> 2 61 -
trunk/Source/WebCore/accessibility/AccessibilityMenuList.cpp
r64874 r83064 36 36 : AccessibilityRenderObject(renderer) 37 37 { 38 }39 40 RenderMenuList* AccessibilityMenuList::renderer() const41 {42 return toRenderMenuList(AccessibilityRenderObject::renderer());43 38 } 44 39 -
trunk/Source/WebCore/accessibility/AccessibilityMenuList.h
r64874 r83064 43 43 virtual bool press() const; 44 44 45 RenderMenuList* renderer() const;46 47 45 private: 48 46 AccessibilityMenuList(RenderMenuList*); -
trunk/Source/WebCore/accessibility/AccessibilityObject.h
r82459 r83064 354 354 355 355 virtual Node* node() const { return 0; } 356 virtual RenderObject* renderer() const { return 0; } 356 357 virtual bool accessibilityIsIgnored() const { return true; } 357 358 … … 405 406 virtual AccessibilityObject* titleUIElement() const { return 0; } 406 407 virtual bool exposesTitleUIElement() const { return true; } 408 virtual AccessibilityObject* correspondingLabelForControlElement() const { return 0; } 407 409 virtual AccessibilityObject* correspondingControlForLabelElement() const { return 0; } 408 410 virtual AccessibilityObject* scrollBar(AccessibilityOrientation) const { return 0; } -
trunk/Source/WebCore/accessibility/AccessibilityRenderObject.h
r75179 r83064 162 162 163 163 void setRenderer(RenderObject* renderer) { m_renderer = renderer; } 164 RenderObject* renderer() const { return m_renderer; }164 virtual RenderObject* renderer() const { return m_renderer; } 165 165 RenderBoxModelObject* renderBoxModelObject() const; 166 166 virtual Node* node() const; -
trunk/Source/WebCore/accessibility/gtk/AXObjectCacheAtk.cpp
r82095 r83064 23 23 #include "AccessibilityObject.h" 24 24 #include "AccessibilityObjectWrapperAtk.h" 25 #include "AccessibilityRenderObject.h"26 25 #include "GOwnPtr.h" 27 26 #include "Range.h" … … 158 157 } 159 158 160 static void emitTextChanged(Accessibility RenderObject* object, AXObjectCache::AXTextChange textChange, unsigned offset, unsigned count)159 static void emitTextChanged(AccessibilityObject* object, AXObjectCache::AXTextChange textChange, unsigned offset, unsigned count) 161 160 { 162 161 // Get the axObject for the parent object … … 188 187 Node* node = object->node(); 189 188 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); 191 190 } 192 191 -
trunk/Source/WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp
r82698 r83064 38 38 #include "AccessibilityListBox.h" 39 39 #include "AccessibilityListBoxOption.h" 40 #include "AccessibilityRenderObject.h"41 40 #include "AccessibilityTable.h" 42 41 #include "AccessibilityTableCell.h" … … 172 171 return returnString(coreObject->stringValue()); 173 172 174 AccessibilityRenderObject* renderObject = static_cast<AccessibilityRenderObject*>(coreObject);175 173 if (coreObject->isControl()) { 176 AccessibilityObject* label = renderObject->correspondingLabelForControlElement();174 AccessibilityObject* label = coreObject->correspondingLabelForControlElement(); 177 175 if (label) { 178 176 AtkObject* atkObject = label->wrapper(); … … 182 180 183 181 // Try text under the node. 184 String textUnder = renderObject->textUnderElement();182 String textUnder = coreObject->textUnderElement(); 185 183 if (textUnder.length()) 186 184 return returnString(textUnder); 187 185 } 188 186 189 if ( renderObject->isImage() || renderObject->isInputImage()) {190 Node* node = renderObject->renderer()->node();187 if (coreObject->isImage() || coreObject->isInputImage()) { 188 Node* node = coreObject->node(); 191 189 if (node && node->isHTMLElement()) { 192 190 // Get the attribute rather than altText String so as not to fall back on title. … … 198 196 199 197 // Fallback for the webArea object: just return the document's title. 200 if ( renderObject->isWebArea()) {198 if (coreObject->isWebArea()) { 201 199 Document* document = coreObject->document(); 202 200 if (document) … … 212 210 Node* node = 0; 213 211 if (coreObject->isAccessibilityRenderObject()) 214 node = static_cast<AccessibilityRenderObject*>(coreObject)->renderer()->node();212 node = coreObject->node(); 215 213 if (!node || !node->isHTMLElement() || coreObject->ariaRoleAttribute() != UnknownRole) 216 214 return returnString(coreObject->accessibilityDescription()); … … 234 232 static void setAtkRelationSetFromCoreObject(AccessibilityObject* coreObject, AtkRelationSet* relationSet) 235 233 { 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(); 239 236 if (label) 240 237 atk_relation_set_add_relation_by_type(relationSet, ATK_RELATION_LABELLED_BY, label->wrapper()); 241 238 } else { 242 AccessibilityObject* control = accObject->correspondingControlForLabelElement();239 AccessibilityObject* control = coreObject->correspondingControlForLabelElement(); 243 240 if (control) 244 241 atk_relation_set_add_relation_by_type(relationSet, ATK_RELATION_LABEL_FOR, control->wrapper()); … … 824 821 return 0; 825 822 826 Accessibility RenderObject::AccessibilityChildrenVector options = listObject->children();823 AccessibilityObject::AccessibilityChildrenVector options = listObject->children(); 827 824 if (i < static_cast<gint>(options.size())) 828 825 return options.at(i).get(); … … 839 836 return 0; 840 837 841 Accessibility RenderObject::AccessibilityChildrenVector selectedItems;838 AccessibilityObject::AccessibilityChildrenVector selectedItems; 842 839 if (coreSelection->isListBox()) 843 840 coreSelection->selectedChildren(selectedItems); 844 841 else if (coreSelection->isMenuList()) { 845 RenderObject* renderer = toAccessibilityRenderObject(coreSelection)->renderer();842 RenderObject* renderer = coreSelection->renderer(); 846 843 if (!renderer) 847 844 return 0; … … 884 881 return false; 885 882 886 Accessibility RenderObject::AccessibilityChildrenVector selectedItems;883 AccessibilityObject::AccessibilityChildrenVector selectedItems; 887 884 if (coreSelection->isListBox() || coreSelection->isMenuList()) { 888 885 // Set the list of selected items to an empty list; then verify that it worked. … … 914 911 915 912 if (coreSelection->isListBox()) { 916 Accessibility RenderObject::AccessibilityChildrenVector selectedItems;913 AccessibilityObject::AccessibilityChildrenVector selectedItems; 917 914 coreSelection->selectedChildren(selectedItems); 918 915 return static_cast<gint>(selectedItems.size()); … … 920 917 921 918 if (coreSelection->isMenuList()) { 922 RenderObject* renderer = toAccessibilityRenderObject(coreSelection)->renderer();919 RenderObject* renderer = coreSelection->renderer(); 923 920 if (!renderer) 924 921 return 0; … … 969 966 return false; 970 967 971 Accessibility RenderObject::AccessibilityChildrenVector children = coreSelection->children();968 AccessibilityObject::AccessibilityChildrenVector children = coreSelection->children(); 972 969 if (coreSelection->isListBox()) { 973 970 AccessibilityListBox* listBox = static_cast<AccessibilityListBox*>(coreSelection); 974 971 listBox->setSelectedChildren(children); 975 Accessibility RenderObject::AccessibilityChildrenVector selectedItems;972 AccessibilityObject::AccessibilityChildrenVector selectedItems; 976 973 listBox->selectedChildren(selectedItems); 977 974 return selectedItems.size() == children.size(); … … 1090 1087 } 1091 1088 1092 gchar* textForObject(Accessibility RenderObject* accObject)1089 gchar* textForObject(AccessibilityObject* coreObject) 1093 1090 { 1094 1091 GString* str = g_string_new(0); 1095 1092 1096 1093 // 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(); 1099 1096 int lineNumber = 0; 1100 PlainTextRange range = accObject->doAXRangeForLine(lineNumber);1097 PlainTextRange range = coreObject->doAXRangeForLine(lineNumber); 1101 1098 while (range.length) { 1102 1099 // When a line of text wraps in a text area, the final space is removed. 1103 1100 if (range.start + range.length < textLength) 1104 1101 range.length -= 1; 1105 String lineText = accObject->doAXStringForRange(range);1102 String lineText = coreObject->doAXStringForRange(range); 1106 1103 g_string_append(str, lineText.utf8().data()); 1107 1104 g_string_append(str, "\n"); 1108 range = accObject->doAXRangeForLine(++lineNumber);1105 range = coreObject->doAXRangeForLine(++lineNumber); 1109 1106 } 1110 } else if ( accObject->isAccessibilityRenderObject()) {1111 GOwnPtr<gchar> rendererText(textForRenderer( accObject->renderer()));1107 } else if (coreObject->isAccessibilityRenderObject()) { 1108 GOwnPtr<gchar> rendererText(textForRenderer(coreObject->renderer())); 1112 1109 g_string_append(str, rendererText.get()); 1113 1110 } … … 1138 1135 if (!ret.length()) { 1139 1136 // 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)); 1141 1138 if (!end) 1142 1139 end = ret.length(); … … 1145 1142 // Prefix a item number/bullet if needed 1146 1143 if (coreObject->roleValue() == ListItemRole) { 1147 RenderObject* objRenderer = static_cast<AccessibilityRenderObject*>(coreObject)->renderer();1144 RenderObject* objRenderer = coreObject->renderer(); 1148 1145 if (objRenderer && objRenderer->isListItem()) { 1149 1146 String markerText = toRenderListItem(objRenderer)->markerTextWithSuffix(); … … 1181 1178 return 0; 1182 1179 1183 AccessibilityRenderObject* accObject = static_cast<AccessibilityRenderObject*>(coreObject);1184 if (!accObject)1185 return 0;1186 1187 1180 // 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)); 1189 1182 g_object_set_data_full(G_OBJECT(textObject), "webkit-accessible-pango-layout", layout, g_object_unref); 1190 1183 return layout; … … 1232 1225 return 0; 1233 1226 1234 RenderObject* renderer = toAccessibilityRenderObject(coreObject)->renderer();1227 RenderObject* renderer = coreObject->renderer(); 1235 1228 if (renderer && renderer->isListItem()) { 1236 1229 String markerText = toRenderListItem(renderer)->markerTextWithSuffix(); … … 1244 1237 } 1245 1238 1246 static int baselinePositionFor AccessibilityRenderObject(RenderObject* renderObject)1239 static int baselinePositionForRenderObject(RenderObject* renderObject) 1247 1240 { 1248 1241 // FIXME: This implementation of baselinePosition originates from RenderObject.cpp and was … … 1258 1251 return 0; 1259 1252 1260 RenderObject* renderer = static_cast<const AccessibilityRenderObject*>(object)->renderer();1253 RenderObject* renderer = object->renderer(); 1261 1254 RenderStyle* style = renderer->style(); 1262 1255 … … 1283 1276 switch (style->verticalAlign()) { 1284 1277 case SUB: 1285 baselinePosition = -1 * baselinePositionFor AccessibilityRenderObject(renderer);1278 baselinePosition = -1 * baselinePositionForRenderObject(renderer); 1286 1279 break; 1287 1280 case SUPER: 1288 baselinePosition = baselinePositionFor AccessibilityRenderObject(renderer);1281 baselinePosition = baselinePositionForRenderObject(renderer); 1289 1282 break; 1290 1283 case BASELINE: … … 1432 1425 // for those cases when it's needed to take it into account 1433 1426 // separately (as in getAccessibilityObjectForOffset) 1434 RenderObject* renderer = static_cast<const AccessibilityRenderObject*>(object)->renderer();1427 RenderObject* renderer = object->renderer(); 1435 1428 if (renderer && renderer->isListMarker()) { 1436 1429 RenderListMarker* marker = toRenderListMarker(renderer); … … 1631 1624 1632 1625 // We need to adjust the offsets for the list item marker. 1633 RenderObject* renderer = toAccessibilityRenderObject(coreObject)->renderer();1626 RenderObject* renderer = coreObject->renderer(); 1634 1627 if (renderer && renderer->isListItem()) { 1635 1628 String markerText = toRenderListItem(renderer)->markerTextWithSuffix(); … … 1705 1698 1706 1699 // We need to adjust the offsets for the list item marker. 1707 RenderObject* renderer = toAccessibilityRenderObject(coreObject)->renderer();1700 RenderObject* renderer = coreObject->renderer(); 1708 1701 if (renderer && renderer->isListItem()) { 1709 1702 String markerText = toRenderListItem(renderer)->markerTextWithSuffix(); … … 1748 1741 return FALSE; 1749 1742 1750 RenderObject* renderer = toAccessibilityRenderObject(coreObject)->renderer();1743 RenderObject* renderer = coreObject->renderer(); 1751 1744 if (renderer && renderer->isListItem()) { 1752 1745 String markerText = toRenderListItem(renderer)->markerTextWithSuffix(); … … 2118 2111 AccessibilityObject* accTable = core(table); 2119 2112 if (accTable->isAccessibilityRenderObject()) { 2120 Node* node = static_cast<AccessibilityRenderObject*>(accTable)->renderer()->node();2113 Node* node = accTable->node(); 2121 2114 if (node && node->hasTagName(HTMLNames::tableTag)) { 2122 2115 HTMLTableCaptionElement* caption = static_cast<HTMLTableElement*>(node)->caption(); … … 2473 2466 // first accessible child has a text renderer 2474 2467 if (role == ListItemRole) { 2475 AccessibilityObject::AccessibilityChildrenVector children = axRenderObject->children();2468 AccessibilityObject::AccessibilityChildrenVector children = coreObject->children(); 2476 2469 if (children.size()) { 2477 2470 AccessibilityObject* axRenderChild = children.at(0).get(); -
trunk/Source/WebCore/accessibility/gtk/WebKitAccessibleHyperlink.cpp
r81587 r83064 26 26 #include "AccessibilityObject.h" 27 27 #include "AccessibilityObjectWrapperAtk.h" 28 #include "AccessibilityRenderObject.h"29 28 #include "NotImplemented.h" 30 29 #include "Position.h" … … 216 215 return baseLength; 217 216 218 RenderObject* renderer = static_cast<const AccessibilityRenderObject*>(markerObj)->renderer();217 RenderObject* renderer = markerObj->renderer(); 219 218 if (!renderer || !renderer->isListMarker()) 220 219 return baseLength;
Note:
See TracChangeset
for help on using the changeset viewer.