Changeset 156532 in webkit
- Timestamp:
- Sep 27, 2013 2:44:20 AM (11 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 23 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r156527 r156532 1 2013-09-27 Mario Sanchez Prada <mario.prada@samsung.com> 2 3 [ATK] Protect entry points in the ATK wrapper against outdated render trees 4 https://bugs.webkit.org/show_bug.cgi?id=121558 5 6 Reviewed by Chris Fleizach. 7 8 Added a new test to check that we do not crash in certain 9 scenarios when hiding objects and retriving accessibility 10 information about it. 11 12 * accessibility/heading-crash-after-hidden-expected.txt: Added. 13 * accessibility/heading-crash-after-hidden.html: Added. 14 15 Rebaselined expectations that were wrong before, since they were 16 not returning the actual value that they should be returning when 17 called AccessibilityUIElement::stringValue(). 18 19 * platform/efl-wk1/accessibility/file-upload-button-stringvalue-expected.txt: 20 Updated, since the actual text being returned should be the actual 21 value of the file chooser (e.g. "(None)") and not the text in the 22 upload botton (e.g. "Choose files"). 23 * platform/efl-wk2/accessibility/file-upload-button-stringvalue-expected.txt: Ditto. 24 * platform/gtk-wk2/accessibility/file-upload-button-stringvalue-expected.txt: Ditto.. 25 * platform/gtk/accessibility/file-upload-button-stringvalue-expected.txt: Ditto. 26 27 * platform/gtk/accessibility/deleting-iframe-destroys-axcache-expected.txt: 28 Updated, since the iframe should be exposed at all after deleting it. 29 30 Removed accesibility test now passing after fixing this issue. 31 32 * platform/gtk/TestExpectations: Removed accessibility/aria-used-on-image-maps.html. 33 1 34 2013-09-26 Antti Koivisto <antti@apple.com> 2 35 -
trunk/LayoutTests/platform/efl-wk1/accessibility/file-upload-button-stringvalue-expected.txt
r154684 r156532 4 4 5 5 Default value (no files selected): 6 accessibilityController.accessibleElementById("singleFileUpload").stringValue: AXValue: Choose File7 accessibilityController.accessibleElementById("multipleFileUpload").stringValue: AXValue: Choose Files6 accessibilityController.accessibleElementById("singleFileUpload").stringValue: AXValue: (None) 7 accessibilityController.accessibleElementById("multipleFileUpload").stringValue: AXValue: (None) 8 8 9 9 Drag and drop a single file: -
trunk/LayoutTests/platform/efl-wk2/accessibility/file-upload-button-stringvalue-expected.txt
r154684 r156532 4 4 5 5 Default value (no files selected): 6 accessibilityController.accessibleElementById("singleFileUpload").stringValue: AXValue: Choose File7 accessibilityController.accessibleElementById("multipleFileUpload").stringValue: AXValue: Choose Files6 accessibilityController.accessibleElementById("singleFileUpload").stringValue: AXValue: (None) 7 accessibilityController.accessibleElementById("multipleFileUpload").stringValue: AXValue: (None) 8 8 9 9 Drag and drop a single file: 10 accessibilityController.accessibleElementById("singleFileUpload").stringValue: AXValue: Choose File11 accessibilityController.accessibleElementById("multipleFileUpload").stringValue: AXValue: Choose Files10 accessibilityController.accessibleElementById("singleFileUpload").stringValue: AXValue: (None) 11 accessibilityController.accessibleElementById("multipleFileUpload").stringValue: AXValue: (None) 12 12 13 13 Drag and drop two files: 14 accessibilityController.accessibleElementById("singleFileUpload").stringValue: AXValue: Choose File15 accessibilityController.accessibleElementById("multipleFileUpload").stringValue: AXValue: Choose Files14 accessibilityController.accessibleElementById("singleFileUpload").stringValue: AXValue: (None) 15 accessibilityController.accessibleElementById("multipleFileUpload").stringValue: AXValue: (None) 16 16 -
trunk/LayoutTests/platform/gtk-wk2/accessibility/file-upload-button-stringvalue-expected.txt
r154359 r156532 4 4 5 5 Default value (no files selected): 6 accessibilityController.accessibleElementById("singleFileUpload").stringValue: AXValue: Choose File7 accessibilityController.accessibleElementById("multipleFileUpload").stringValue: AXValue: Choose Files6 accessibilityController.accessibleElementById("singleFileUpload").stringValue: AXValue: (None) 7 accessibilityController.accessibleElementById("multipleFileUpload").stringValue: AXValue: (None) 8 8 9 9 Drag and drop a single file: 10 accessibilityController.accessibleElementById("singleFileUpload").stringValue: AXValue: Choose File11 accessibilityController.accessibleElementById("multipleFileUpload").stringValue: AXValue: Choose Files10 accessibilityController.accessibleElementById("singleFileUpload").stringValue: AXValue: (None) 11 accessibilityController.accessibleElementById("multipleFileUpload").stringValue: AXValue: (None) 12 12 13 13 Drag and drop two files: 14 accessibilityController.accessibleElementById("singleFileUpload").stringValue: AXValue: Choose File15 accessibilityController.accessibleElementById("multipleFileUpload").stringValue: AXValue: Choose Files14 accessibilityController.accessibleElementById("singleFileUpload").stringValue: AXValue: (None) 15 accessibilityController.accessibleElementById("multipleFileUpload").stringValue: AXValue: (None) 16 16 -
trunk/LayoutTests/platform/gtk/TestExpectations
r156460 r156532 850 850 webkit.org/b/98357 accessibility/aria-readonly.html [ Failure ] 851 851 webkit.org/b/98359 accessibility/aria-text-role.html [ Failure ] 852 webkit.org/b/98360 accessibility/aria-used-on-image-maps.html [ Failure ]853 852 webkit.org/b/98361 accessibility/button-press-action.html [ Failure ] 854 853 webkit.org/b/98363 accessibility/canvas-fallback-content-2.html [ Failure ] -
trunk/LayoutTests/platform/gtk/accessibility/deleting-iframe-destroys-axcache-expected.txt
r131674 r156532 27 27 AXRole: AXWebArea 28 28 AXRole: AXParagraph AXValue: Before 29 AXRole: AXGroup AXValue:30 29 AXRole: AXParagraph AXValue: After 31 30 AXRole: AXParagraph AXValue: End of test -
trunk/LayoutTests/platform/gtk/accessibility/file-upload-button-stringvalue-expected.txt
r154359 r156532 4 4 5 5 Default value (no files selected): 6 accessibilityController.accessibleElementById("singleFileUpload").stringValue: AXValue: Choose File7 accessibilityController.accessibleElementById("multipleFileUpload").stringValue: AXValue: Choose Files6 accessibilityController.accessibleElementById("singleFileUpload").stringValue: AXValue: (None) 7 accessibilityController.accessibleElementById("multipleFileUpload").stringValue: AXValue: (None) 8 8 9 9 Drag and drop a single file: -
trunk/Source/WebCore/ChangeLog
r156530 r156532 1 2013-09-27 Mario Sanchez Prada <mario.prada@samsung.com> 2 3 [ATK] Protect entry points in the ATK wrapper against outdated render trees 4 https://bugs.webkit.org/show_bug.cgi?id=121558 5 6 Reviewed by Chris Fleizach. 7 8 Make sure that we protect every entry point in the ATK wrapper 9 against outdated render trees, before using the WebCore's 10 accessibility API, since that might lead to problems (and crashes) 11 if the render and accessibility trees are not stable. 12 13 Thus, call AccessibilityObject::updateBackingStore() in those 14 entry points and check whether the ATK wrapper is detached or not 15 after that, to decide whether to continue or not. 16 17 Besides providing a new test to check that it WebKit does not 18 crash in a given scenario (which actually triggered the 19 investigation here), solving this situation also fixes other tests 20 that were previously failing (aria-used-on-image-maps.html) or 21 that were printing wrong results, not detected until now due to 22 wrong platform specific expectations (file-upload-button-stringvalue 23 and deleting-iframe-destroys-axcache). 24 25 Test: accessibility/heading-crash-after-hidden.html 26 27 * accessibility/atk/WebKitAccessibleUtil.h: Added two new macros 28 to inject the needed code at the beginning of each entry point to 29 allow gracefully exit those functions when the render tree is 30 unstable. Inspired by g_return_if_fail and g_return_val_if_fail, we 31 called them returnIfWebKitAccessibleIsInvalid and returnValIfWebKitAccessibleIsInvalid. 32 33 * accessibility/atk/WebKitAccessibleHyperlink.cpp: 34 (webkitAccessibleHyperlinkActionDoAction): Protect entry point. 35 (webkitAccessibleHyperlinkActionGetNActions): Ditto. 36 (webkitAccessibleHyperlinkActionGetDescription): Ditto. 37 (webkitAccessibleHyperlinkActionGetKeybinding): Ditto. 38 (webkitAccessibleHyperlinkActionGetName): Ditto. 39 (webkitAccessibleHyperlinkGetURI): Ditto. 40 (webkitAccessibleHyperlinkGetObject): Ditto. 41 (webkitAccessibleHyperlinkGetStartIndex): Ditto. 42 (webkitAccessibleHyperlinkGetEndIndex): Ditto. 43 (webkitAccessibleHyperlinkIsValid): Ditto. 44 (webkitAccessibleHyperlinkGetNAnchors): Ditto. 45 (webkitAccessibleHyperlinkIsSelectedLink): Ditto. 46 * accessibility/atk/WebKitAccessibleInterfaceAction.cpp: 47 (webkitAccessibleActionDoAction): Ditto. 48 (webkitAccessibleActionGetNActions): Ditto. 49 (webkitAccessibleActionGetDescription): Ditto. 50 (webkitAccessibleActionGetKeybinding): Ditto. 51 (webkitAccessibleActionGetName): Ditto. 52 * accessibility/atk/WebKitAccessibleInterfaceComponent.cpp: 53 (webkitAccessibleComponentRefAccessibleAtPoint): Ditto. 54 (webkitAccessibleComponentGetExtents): Ditto. 55 (webkitAccessibleComponentGrabFocus): Ditto. 56 * accessibility/atk/WebKitAccessibleInterfaceDocument.cpp: 57 (webkitAccessibleDocumentGetAttributeValue): Ditto. 58 (webkitAccessibleDocumentGetAttributes): Ditto. 59 (webkitAccessibleDocumentGetLocale): Ditto. 60 * accessibility/atk/WebKitAccessibleInterfaceEditableText.cpp: 61 (webkitAccessibleEditableTextSetRunAttributes): Ditto. 62 (webkitAccessibleEditableTextSetTextContents): Ditto. 63 (webkitAccessibleEditableTextInsertText): Ditto. 64 (webkitAccessibleEditableTextCopyText): Ditto. 65 (webkitAccessibleEditableTextCutText): Ditto. 66 (webkitAccessibleEditableTextDeleteText): Ditto. 67 (webkitAccessibleEditableTextPasteText): Ditto. 68 * accessibility/atk/WebKitAccessibleInterfaceHypertext.cpp: 69 (webkitAccessibleHypertextGetLink): Ditto. 70 (webkitAccessibleHypertextGetNLinks): Ditto. 71 (webkitAccessibleHypertextGetLinkIndex): Ditto. 72 * accessibility/atk/WebKitAccessibleInterfaceImage.cpp: 73 (webkitAccessibleImageGetImagePosition): Ditto. 74 (webkitAccessibleImageGetImageDescription): Ditto. 75 (webkitAccessibleImageGetImageSize): Ditto. 76 * accessibility/atk/WebKitAccessibleInterfaceSelection.cpp: 77 (webkitAccessibleSelectionAddSelection): Ditto. 78 (webkitAccessibleSelectionClearSelection): Ditto. 79 (webkitAccessibleSelectionRefSelection): Ditto. 80 (webkitAccessibleSelectionGetSelectionCount): Ditto. 81 (webkitAccessibleSelectionIsChildSelected): Ditto. 82 (webkitAccessibleSelectionRemoveSelection): Ditto. 83 (webkitAccessibleSelectionSelectAllSelection): Ditto. 84 * accessibility/atk/WebKitAccessibleInterfaceTable.cpp: 85 (webkitAccessibleTableRefAt): Ditto. 86 (webkitAccessibleTableGetIndexAt): Ditto. 87 (webkitAccessibleTableGetColumnAtIndex): Ditto. 88 (webkitAccessibleTableGetRowAtIndex): Ditto. 89 (webkitAccessibleTableGetNColumns): Ditto. 90 (webkitAccessibleTableGetNRows): Ditto. 91 (webkitAccessibleTableGetColumnExtentAt): Ditto. 92 (webkitAccessibleTableGetRowExtentAt): Ditto. 93 (webkitAccessibleTableGetColumnHeader): Ditto. 94 (webkitAccessibleTableGetRowHeader): Ditto. 95 (webkitAccessibleTableGetCaption): Ditto. 96 (webkitAccessibleTableGetColumnDescription): Ditto. 97 (webkitAccessibleTableGetRowDescription): Ditto. 98 * accessibility/atk/WebKitAccessibleInterfaceText.cpp: 99 (webkitAccessibleTextGetText): Ditto. 100 (webkitAccessibleTextGetTextAfterOffset): Ditto. 101 (webkitAccessibleTextGetTextAtOffset): Ditto. 102 (webkitAccessibleTextGetTextBeforeOffset): Ditto. 103 (webkitAccessibleTextGetCharacterAtOffset): Ditto. 104 (webkitAccessibleTextGetCaretOffset): Ditto. 105 (webkitAccessibleTextGetRunAttributes): Ditto. 106 (webkitAccessibleTextGetDefaultAttributes): Ditto. 107 (webkitAccessibleTextGetCharacterExtents): Ditto. 108 (webkitAccessibleTextGetRangeExtents): Ditto. 109 (webkitAccessibleTextGetCharacterCount): Ditto. 110 (webkitAccessibleTextGetOffsetAtPoint): Ditto. 111 (webkitAccessibleTextGetNSelections): Ditto. 112 (webkitAccessibleTextGetSelection): Ditto. 113 (webkitAccessibleTextAddSelection): Ditto. 114 (webkitAccessibleTextSetSelection): Ditto. 115 (webkitAccessibleTextRemoveSelection): Ditto. 116 (webkitAccessibleTextSetCaretOffset): Ditto. 117 * accessibility/atk/WebKitAccessibleInterfaceValue.cpp: 118 (webkitAccessibleValueGetCurrentValue): Ditto. 119 (webkitAccessibleValueGetMaximumValue): Ditto. 120 (webkitAccessibleValueGetMinimumValue): Ditto. 121 (webkitAccessibleValueSetCurrentValue): Ditto. 122 (webkitAccessibleValueGetMinimumIncrement): Ditto. 123 * accessibility/atk/WebKitAccessibleWrapperAtk.cpp: 124 (core): Removed, as it's not actually needed. 125 (webkitAccessibleGetName): Protect entry point. 126 (webkitAccessibleGetDescription): Ditto. 127 (webkitAccessibleGetParent): Ditto. 128 (webkitAccessibleGetNChildren): Ditto. 129 (webkitAccessibleRefChild): Ditto. 130 (webkitAccessibleGetIndexInParent): Ditto. 131 (webkitAccessibleGetAttributes): Ditto. 132 (webkitAccessibleGetRole): Ditto. 133 (webkitAccessibleRefStateSet): Ditto. 134 (webkitAccessibleRefRelationSet): Ditto. 135 (webkitAccessibleGetObjectLocale): Ditto. 136 (webkitAccessibleDetach): Ditto. 137 (webkitAccessibleIsDetached): New helper function, to be used from 138 the newly added macros. We need to check whether the wrapper is 139 detached and not just the wrapper AccessibilityObject since once 140 the detachment happens we can't trust anything but the AtkObject 141 from the wrapper (the AccessibilityObject might be invalid). 142 * accessibility/atk/WebKitAccessibleWrapperAtk.h: 143 144 Assert that the render tree is neither being updated nor in need 145 of being updated before trying to compute the text under a given 146 element, since that might lead to crashes due to the constructor 147 of TextIterator calling updateLayoutIgnorePendingStylesheets(). 148 149 * accessibility/AccessibilityNodeObject.cpp: 150 (WebCore::AccessibilityNodeObject::textUnderElement): Assert that 151 the render tree is neither being updated nor needing updating. 152 1 153 2013-09-27 Mario Sanchez Prada <mario.prada@samsung.com> 2 154 -
trunk/Source/WebCore/accessibility/AccessibilityNodeObject.cpp
r156339 r156532 69 69 #include "Page.h" 70 70 #include "ProgressTracker.h" 71 #include "RenderView.h" 71 72 #include "SVGElement.h" 72 73 #include "SVGNames.h" … … 1580 1581 if (node && node->isTextNode()) 1581 1582 return toText(node)->wholeText(); 1583 1584 // The render tree should be stable before going ahead. Otherwise, further uses of the 1585 // TextIterator will force a layout update, potentially altering the accessibility tree 1586 // and leading to crashes in the loop that computes the result text from the children. 1587 ASSERT(!document()->renderView()->layoutState()); 1588 ASSERT(!document()->childNeedsStyleRecalc()); 1582 1589 1583 1590 StringBuilder builder; -
trunk/Source/WebCore/accessibility/atk/WebKitAccessibleHyperlink.cpp
r154937 r156532 95 95 g_return_val_if_fail(WEBKIT_ACCESSIBLE_HYPERLINK(action)->priv->hyperlinkImpl, FALSE); 96 96 g_return_val_if_fail(!index, FALSE); 97 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE_HYPERLINK(action)->priv->hyperlinkImpl, FALSE); 97 98 98 99 if (!ATK_IS_ACTION(WEBKIT_ACCESSIBLE_HYPERLINK(action)->priv->hyperlinkImpl)) … … 110 111 g_return_val_if_fail(WEBKIT_IS_ACCESSIBLE_HYPERLINK(action), 0); 111 112 g_return_val_if_fail(WEBKIT_ACCESSIBLE_HYPERLINK(action)->priv->hyperlinkImpl, 0); 113 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE_HYPERLINK(action)->priv->hyperlinkImpl, 0); 112 114 113 115 if (!ATK_IS_ACTION(WEBKIT_ACCESSIBLE_HYPERLINK(action)->priv->hyperlinkImpl)) … … 122 124 g_return_val_if_fail(WEBKIT_ACCESSIBLE_HYPERLINK(action)->priv->hyperlinkImpl, 0); 123 125 g_return_val_if_fail(!index, 0); 126 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE_HYPERLINK(action)->priv->hyperlinkImpl, 0); 124 127 125 128 // TODO: Need a way to provide/localize action descriptions. … … 131 134 { 132 135 g_return_val_if_fail(WEBKIT_IS_ACCESSIBLE_HYPERLINK(action), 0); 136 g_return_val_if_fail(WEBKIT_ACCESSIBLE_HYPERLINK(action)->priv->hyperlinkImpl, 0); 133 137 g_return_val_if_fail(!index, 0); 134 138 135 139 WebKitAccessibleHyperlinkPrivate* priv = WEBKIT_ACCESSIBLE_HYPERLINK(action)->priv; 136 g_return_val_if_fail(priv->hyperlinkImpl, 0);140 returnValIfWebKitAccessibleIsInvalid(priv->hyperlinkImpl, 0); 137 141 138 142 if (!ATK_IS_ACTION(priv->hyperlinkImpl)) … … 150 154 { 151 155 g_return_val_if_fail(WEBKIT_IS_ACCESSIBLE_HYPERLINK(action), 0); 156 g_return_val_if_fail(WEBKIT_ACCESSIBLE_HYPERLINK(action)->priv->hyperlinkImpl, 0); 152 157 g_return_val_if_fail(!index, 0); 153 158 154 159 WebKitAccessibleHyperlinkPrivate* priv = WEBKIT_ACCESSIBLE_HYPERLINK(action)->priv; 155 g_return_val_if_fail(priv->hyperlinkImpl, 0);160 returnValIfWebKitAccessibleIsInvalid(priv->hyperlinkImpl, 0); 156 161 157 162 if (!ATK_IS_ACTION(priv->hyperlinkImpl)) … … 178 183 { 179 184 g_return_val_if_fail(WEBKIT_IS_ACCESSIBLE_HYPERLINK(link), 0); 185 g_return_val_if_fail(WEBKIT_ACCESSIBLE_HYPERLINK(link)->priv->hyperlinkImpl, 0); 186 180 187 // FIXME: Do NOT support more than one instance of an AtkObject 181 188 // implementing AtkHyperlinkImpl in every instance of AtkHyperLink 182 189 g_return_val_if_fail(!index, 0); 183 190 191 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE_HYPERLINK(link)->priv->hyperlinkImpl, 0); 192 184 193 AccessibilityObject* coreObject = core(link); 185 194 if (!coreObject || coreObject->url().isNull()) … … 197 206 // implementing AtkHyperlinkImpl in every instance of AtkHyperLink 198 207 g_return_val_if_fail(!index, 0); 208 209 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE_HYPERLINK(link)->priv->hyperlinkImpl, 0); 199 210 200 211 return ATK_OBJECT(WEBKIT_ACCESSIBLE_HYPERLINK(link)->priv->hyperlinkImpl); … … 231 242 { 232 243 g_return_val_if_fail(WEBKIT_IS_ACCESSIBLE_HYPERLINK(link), 0); 244 g_return_val_if_fail(WEBKIT_ACCESSIBLE_HYPERLINK(link)->priv->hyperlinkImpl, 0); 245 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE_HYPERLINK(link)->priv->hyperlinkImpl, 0); 233 246 234 247 AccessibilityObject* coreObject = core(link); … … 255 268 { 256 269 g_return_val_if_fail(WEBKIT_IS_ACCESSIBLE_HYPERLINK(link), 0); 270 g_return_val_if_fail(WEBKIT_ACCESSIBLE_HYPERLINK(link)->priv->hyperlinkImpl, 0); 271 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE_HYPERLINK(link)->priv->hyperlinkImpl, 0); 257 272 258 273 AccessibilityObject* coreObject = core(link); … … 278 293 static gboolean webkitAccessibleHyperlinkIsValid(AtkHyperlink* link) 279 294 { 280 g_return_val_if_fail(WEBKIT_IS_ACCESSIBLE_HYPERLINK(link), 0);295 g_return_val_if_fail(WEBKIT_IS_ACCESSIBLE_HYPERLINK(link), FALSE); 281 296 g_return_val_if_fail(WEBKIT_ACCESSIBLE_HYPERLINK(link)->priv->hyperlinkImpl, FALSE); 297 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE_HYPERLINK(link)->priv->hyperlinkImpl, FALSE); 282 298 283 299 // Link is valid for the whole object's lifetime … … 291 307 g_return_val_if_fail(WEBKIT_IS_ACCESSIBLE_HYPERLINK(link), 0); 292 308 g_return_val_if_fail(WEBKIT_ACCESSIBLE_HYPERLINK(link)->priv->hyperlinkImpl, 0); 309 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE_HYPERLINK(link)->priv->hyperlinkImpl, 0); 310 293 311 return 1; 294 312 } 295 313 296 static gboolean webkitAccessibleHyperlinkIsSelectedLink(AtkHyperlink*) 297 { 314 static gboolean webkitAccessibleHyperlinkIsSelectedLink(AtkHyperlink* link) 315 { 316 g_return_val_if_fail(WEBKIT_IS_ACCESSIBLE_HYPERLINK(link), FALSE); 317 g_return_val_if_fail(WEBKIT_ACCESSIBLE_HYPERLINK(link)->priv->hyperlinkImpl, FALSE); 318 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE_HYPERLINK(link)->priv->hyperlinkImpl, FALSE); 319 298 320 // Not implemented: this function is deprecated in ATK now 299 321 notImplemented(); -
trunk/Source/WebCore/accessibility/atk/WebKitAccessibleInterfaceAction.cpp
r144636 r156532 52 52 static gboolean webkitAccessibleActionDoAction(AtkAction* action, gint index) 53 53 { 54 g_return_val_if_fail(ATK_IS_ACTION(action), FALSE); 54 55 g_return_val_if_fail(!index, FALSE); 56 57 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(action), FALSE); 58 55 59 return core(action)->performDefaultAction(); 56 60 } 57 61 58 static gint webkitAccessibleActionGetNActions(AtkAction* )62 static gint webkitAccessibleActionGetNActions(AtkAction* action) 59 63 { 64 g_return_val_if_fail(ATK_IS_ACTION(action), 0); 65 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(action), 0); 66 60 67 return 1; 61 68 } 62 69 63 static const gchar* webkitAccessibleActionGetDescription(AtkAction* , gint)70 static const gchar* webkitAccessibleActionGetDescription(AtkAction* action, gint) 64 71 { 72 g_return_val_if_fail(ATK_IS_ACTION(action), 0); 73 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(action), 0); 74 65 75 // TODO: Need a way to provide/localize action descriptions. 66 76 notImplemented(); … … 70 80 static const gchar* webkitAccessibleActionGetKeybinding(AtkAction* action, gint index) 71 81 { 82 g_return_val_if_fail(ATK_IS_ACTION(action), 0); 72 83 g_return_val_if_fail(!index, 0); 84 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(action), 0); 85 73 86 // FIXME: Construct a proper keybinding string. 74 87 return cacheAndReturnAtkProperty(ATK_OBJECT(action), AtkCachedActionKeyBinding, core(action)->accessKey().string()); … … 77 90 static const gchar* webkitAccessibleActionGetName(AtkAction* action, gint index) 78 91 { 92 g_return_val_if_fail(ATK_IS_ACTION(action), 0); 79 93 g_return_val_if_fail(!index, 0); 94 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(action), 0); 95 80 96 return cacheAndReturnAtkProperty(ATK_OBJECT(action), AtkCachedActionName, core(action)->actionVerb()); 81 97 } -
trunk/Source/WebCore/accessibility/atk/WebKitAccessibleInterfaceComponent.cpp
r139159 r156532 69 69 static AtkObject* webkitAccessibleComponentRefAccessibleAtPoint(AtkComponent* component, gint x, gint y, AtkCoordType coordType) 70 70 { 71 g_return_val_if_fail(ATK_IS_COMPONENT(component), 0); 72 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(component), 0); 73 71 74 IntPoint pos = atkToContents(core(component), coordType, x, y); 72 75 … … 80 83 static void webkitAccessibleComponentGetExtents(AtkComponent* component, gint* x, gint* y, gint* width, gint* height, AtkCoordType coordType) 81 84 { 85 g_return_if_fail(ATK_IS_COMPONENT(component)); 86 returnIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(component)); 87 82 88 IntRect rect = pixelSnappedIntRect(core(component)->elementRect()); 83 89 contentsRelativeToAtkCoordinateType(core(component), coordType, rect, x, y, width, height); … … 86 92 static gboolean webkitAccessibleComponentGrabFocus(AtkComponent* component) 87 93 { 94 g_return_val_if_fail(ATK_IS_COMPONENT(component), FALSE); 95 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(component), FALSE); 96 88 97 core(component)->setFocused(true); 89 98 return core(component)->isFocused(); -
trunk/Source/WebCore/accessibility/atk/WebKitAccessibleInterfaceDocument.cpp
r151524 r156532 79 79 static const gchar* webkitAccessibleDocumentGetAttributeValue(AtkDocument* document, const gchar* attribute) 80 80 { 81 g_return_val_if_fail(ATK_IS_DOCUMENT(document), 0); 82 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(document), 0); 83 81 84 return documentAttributeValue(document, attribute); 82 85 } … … 84 87 static AtkAttributeSet* webkitAccessibleDocumentGetAttributes(AtkDocument* document) 85 88 { 89 g_return_val_if_fail(ATK_IS_DOCUMENT(document), 0); 90 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(document), 0); 91 86 92 AtkAttributeSet* attributeSet = 0; 87 93 const gchar* attributes[] = { "DocType", "Encoding", "URI" }; … … 98 104 static const gchar* webkitAccessibleDocumentGetLocale(AtkDocument* document) 99 105 { 106 g_return_val_if_fail(ATK_IS_DOCUMENT(document), 0); 107 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(document), 0); 108 100 109 // The logic to resolve locale has been moved to 101 110 // AtkObject::get_object_locale() virtual method. However, to avoid breaking -
trunk/Source/WebCore/accessibility/atk/WebKitAccessibleInterfaceEditableText.cpp
r150140 r156532 39 39 #include "Frame.h" 40 40 #include "NotImplemented.h" 41 #include "WebKitAccessibleUtil.h" 41 42 #include "WebKitAccessibleWrapperAtk.h" 42 43 … … 51 52 } 52 53 53 static gboolean webkitAccessibleEditableTextSetRunAttributes(AtkEditableText* , AtkAttributeSet*, gint, gint)54 static gboolean webkitAccessibleEditableTextSetRunAttributes(AtkEditableText* text, AtkAttributeSet*, gint, gint) 54 55 { 56 g_return_val_if_fail(ATK_IS_EDITABLE_TEXT(text), FALSE); 57 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(text), FALSE); 58 55 59 notImplemented(); 56 60 return FALSE; … … 59 63 static void webkitAccessibleEditableTextSetTextContents(AtkEditableText* text, const gchar* string) 60 64 { 65 g_return_if_fail(ATK_IS_EDITABLE_TEXT(text)); 66 returnIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(text)); 67 61 68 // FIXME: string nullcheck? 62 69 core(text)->setValue(String::fromUTF8(string)); … … 65 72 static void webkitAccessibleEditableTextInsertText(AtkEditableText* text, const gchar* string, gint length, gint* position) 66 73 { 74 g_return_if_fail(ATK_IS_EDITABLE_TEXT(text)); 75 returnIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(text)); 76 67 77 if (!string) 68 78 return; … … 84 94 } 85 95 86 static void webkitAccessibleEditableTextCopyText(AtkEditableText* , gint, gint)96 static void webkitAccessibleEditableTextCopyText(AtkEditableText* text, gint, gint) 87 97 { 98 g_return_if_fail(ATK_IS_EDITABLE_TEXT(text)); 99 returnIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(text)); 100 88 101 notImplemented(); 89 102 } 90 103 91 static void webkitAccessibleEditableTextCutText(AtkEditableText* , gint, gint)104 static void webkitAccessibleEditableTextCutText(AtkEditableText* text, gint, gint) 92 105 { 106 g_return_if_fail(ATK_IS_EDITABLE_TEXT(text)); 107 returnIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(text)); 108 93 109 notImplemented(); 94 110 } … … 96 112 static void webkitAccessibleEditableTextDeleteText(AtkEditableText* text, gint startPos, gint endPos) 97 113 { 114 g_return_if_fail(ATK_IS_EDITABLE_TEXT(text)); 115 returnIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(text)); 116 98 117 AccessibilityObject* coreObject = core(text); 99 118 // FIXME: Not implemented in WebCore … … 110 129 } 111 130 112 static void webkitAccessibleEditableTextPasteText(AtkEditableText* , gint)131 static void webkitAccessibleEditableTextPasteText(AtkEditableText* text, gint) 113 132 { 133 g_return_if_fail(ATK_IS_EDITABLE_TEXT(text)); 134 returnIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(text)); 135 114 136 notImplemented(); 115 137 } -
trunk/Source/WebCore/accessibility/atk/WebKitAccessibleInterfaceHypertext.cpp
r139159 r156532 24 24 25 25 #include "AccessibilityObject.h" 26 #include "WebKitAccessibleUtil.h" 26 27 #include "WebKitAccessibleWrapperAtk.h" 27 28 … … 38 39 static AtkHyperlink* webkitAccessibleHypertextGetLink(AtkHypertext* hypertext, gint index) 39 40 { 41 g_return_val_if_fail(ATK_HYPERTEXT(hypertext), 0); 42 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(hypertext), 0); 43 40 44 AccessibilityObject::AccessibilityChildrenVector children = core(hypertext)->children(); 41 45 if (index < 0 || static_cast<unsigned>(index) >= children.size()) … … 63 67 static gint webkitAccessibleHypertextGetNLinks(AtkHypertext* hypertext) 64 68 { 69 g_return_val_if_fail(ATK_HYPERTEXT(hypertext), 0); 70 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(hypertext), 0); 71 65 72 AccessibilityObject::AccessibilityChildrenVector children = core(hypertext)->children(); 66 73 if (!children.size()) … … 82 89 static gint webkitAccessibleHypertextGetLinkIndex(AtkHypertext* hypertext, gint charIndex) 83 90 { 91 g_return_val_if_fail(ATK_HYPERTEXT(hypertext), -1); 92 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(hypertext), -1); 93 84 94 size_t linksCount = webkitAccessibleHypertextGetNLinks(hypertext); 85 95 if (!linksCount) -
trunk/Source/WebCore/accessibility/atk/WebKitAccessibleInterfaceImage.cpp
r144636 r156532 52 52 static void webkitAccessibleImageGetImagePosition(AtkImage* image, gint* x, gint* y, AtkCoordType coordType) 53 53 { 54 g_return_if_fail(ATK_IMAGE(image)); 55 returnIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(image)); 56 54 57 IntRect rect = pixelSnappedIntRect(core(image)->elementRect()); 55 58 contentsRelativeToAtkCoordinateType(core(image), coordType, rect, x, y); … … 58 61 static const gchar* webkitAccessibleImageGetImageDescription(AtkImage* image) 59 62 { 63 g_return_val_if_fail(ATK_IMAGE(image), 0); 64 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(image), 0); 65 60 66 return cacheAndReturnAtkProperty(ATK_OBJECT(image), AtkCachedImageDescription, accessibilityDescription(core(image))); 61 67 } … … 63 69 static void webkitAccessibleImageGetImageSize(AtkImage* image, gint* width, gint* height) 64 70 { 71 g_return_if_fail(ATK_IMAGE(image)); 72 returnIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(image)); 73 65 74 IntSize size = core(image)->pixelSnappedSize(); 66 75 -
trunk/Source/WebCore/accessibility/atk/WebKitAccessibleInterfaceSelection.cpp
r139159 r156532 38 38 #include "HTMLSelectElement.h" 39 39 #include "RenderObject.h" 40 #include "WebKitAccessibleUtil.h" 40 41 #include "WebKitAccessibleWrapperAtk.h" 41 42 … … 128 129 static gboolean webkitAccessibleSelectionAddSelection(AtkSelection* selection, gint index) 129 130 { 131 g_return_val_if_fail(ATK_SELECTION(selection), FALSE); 132 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(selection), FALSE); 133 130 134 AccessibilityObject* coreSelection = core(selection); 131 135 if (!coreSelection) … … 143 147 static gboolean webkitAccessibleSelectionClearSelection(AtkSelection* selection) 144 148 { 149 g_return_val_if_fail(ATK_SELECTION(selection), FALSE); 150 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(selection), FALSE); 151 145 152 AccessibilityObject* coreSelection = core(selection); 146 153 if (!coreSelection) … … 160 167 static AtkObject* webkitAccessibleSelectionRefSelection(AtkSelection* selection, gint index) 161 168 { 169 g_return_val_if_fail(ATK_SELECTION(selection), 0); 170 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(selection), 0); 171 162 172 AccessibilityObject* option = optionFromSelection(selection, index); 163 173 if (option) { … … 172 182 static gint webkitAccessibleSelectionGetSelectionCount(AtkSelection* selection) 173 183 { 184 g_return_val_if_fail(ATK_SELECTION(selection), 0); 185 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(selection), 0); 186 174 187 AccessibilityObject* coreSelection = core(selection); 175 188 if (!coreSelection || !coreSelection->isAccessibilityRenderObject()) … … 196 209 static gboolean webkitAccessibleSelectionIsChildSelected(AtkSelection* selection, gint index) 197 210 { 198 AccessibilityObject* coreSelection = core(selection); 199 if (!coreSelection) 200 return 0; 211 g_return_val_if_fail(ATK_SELECTION(selection), FALSE); 212 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(selection), FALSE); 213 214 AccessibilityObject* coreSelection = core(selection); 215 if (!coreSelection) 216 return FALSE; 201 217 202 218 AccessibilityObject* option = optionFromList(selection, index); … … 209 225 static gboolean webkitAccessibleSelectionRemoveSelection(AtkSelection* selection, gint index) 210 226 { 211 AccessibilityObject* coreSelection = core(selection); 212 if (!coreSelection) 213 return 0; 227 g_return_val_if_fail(ATK_SELECTION(selection), FALSE); 228 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(selection), FALSE); 229 230 AccessibilityObject* coreSelection = core(selection); 231 if (!coreSelection) 232 return FALSE; 214 233 215 234 // TODO: This is only getting called if i == 0. What is preventing the rest? … … 225 244 static gboolean webkitAccessibleSelectionSelectAllSelection(AtkSelection* selection) 226 245 { 246 g_return_val_if_fail(ATK_SELECTION(selection), FALSE); 247 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(selection), FALSE); 248 227 249 AccessibilityObject* coreSelection = core(selection); 228 250 if (!coreSelection || !coreSelection->isMultiSelectable()) -
trunk/Source/WebCore/accessibility/atk/WebKitAccessibleInterfaceTable.cpp
r156144 r156532 43 43 #include "RenderElement.h" 44 44 #include "WebKitAccessibleInterfaceText.h" 45 #include "WebKitAccessibleUtil.h" 45 46 #include "WebKitAccessibleWrapperAtk.h" 46 47 … … 92 93 static AtkObject* webkitAccessibleTableRefAt(AtkTable* table, gint row, gint column) 93 94 { 95 g_return_val_if_fail(ATK_TABLE(table), 0); 96 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(table), 0); 97 94 98 AccessibilityTableCell* axCell = cell(table, row, column); 95 99 if (!axCell) … … 107 111 static gint webkitAccessibleTableGetIndexAt(AtkTable* table, gint row, gint column) 108 112 { 113 g_return_val_if_fail(ATK_TABLE(table), -1); 114 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(table), -1); 115 109 116 AccessibilityTableCell* axCell = cell(table, row, column); 110 117 AccessibilityTable* axTable = static_cast<AccessibilityTable*>(core(table)); … … 114 121 static gint webkitAccessibleTableGetColumnAtIndex(AtkTable* table, gint index) 115 122 { 123 g_return_val_if_fail(ATK_TABLE(table), -1); 124 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(table), -1); 125 116 126 AccessibilityTableCell* axCell = cellAtIndex(table, index); 117 127 if (axCell) { … … 125 135 static gint webkitAccessibleTableGetRowAtIndex(AtkTable* table, gint index) 126 136 { 137 g_return_val_if_fail(ATK_TABLE(table), -1); 138 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(table), -1); 139 127 140 AccessibilityTableCell* axCell = cellAtIndex(table, index); 128 141 if (axCell) { … … 136 149 static gint webkitAccessibleTableGetNColumns(AtkTable* table) 137 150 { 151 g_return_val_if_fail(ATK_TABLE(table), 0); 152 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(table), 0); 153 138 154 AccessibilityObject* accTable = core(table); 139 155 if (accTable->isAccessibilityRenderObject()) … … 144 160 static gint webkitAccessibleTableGetNRows(AtkTable* table) 145 161 { 162 g_return_val_if_fail(ATK_TABLE(table), 0); 163 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(table), 0); 164 146 165 AccessibilityObject* accTable = core(table); 147 166 if (accTable->isAccessibilityRenderObject()) … … 152 171 static gint webkitAccessibleTableGetColumnExtentAt(AtkTable* table, gint row, gint column) 153 172 { 173 g_return_val_if_fail(ATK_TABLE(table), 0); 174 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(table), 0); 175 154 176 AccessibilityTableCell* axCell = cell(table, row, column); 155 177 if (axCell) { … … 163 185 static gint webkitAccessibleTableGetRowExtentAt(AtkTable* table, gint row, gint column) 164 186 { 187 g_return_val_if_fail(ATK_TABLE(table), 0); 188 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(table), 0); 189 165 190 AccessibilityTableCell* axCell = cell(table, row, column); 166 191 if (axCell) { … … 174 199 static AtkObject* webkitAccessibleTableGetColumnHeader(AtkTable* table, gint column) 175 200 { 201 g_return_val_if_fail(ATK_TABLE(table), 0); 202 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(table), 0); 203 176 204 AccessibilityObject* accTable = core(table); 177 205 if (accTable->isAccessibilityRenderObject()) { … … 192 220 static AtkObject* webkitAccessibleTableGetRowHeader(AtkTable* table, gint row) 193 221 { 222 g_return_val_if_fail(ATK_TABLE(table), 0); 223 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(table), 0); 224 194 225 AccessibilityObject* accTable = core(table); 195 226 if (accTable->isAccessibilityRenderObject()) { … … 210 241 static AtkObject* webkitAccessibleTableGetCaption(AtkTable* table) 211 242 { 243 g_return_val_if_fail(ATK_TABLE(table), 0); 244 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(table), 0); 245 212 246 AccessibilityObject* accTable = core(table); 213 247 if (accTable->isAccessibilityRenderObject()) { … … 224 258 static const gchar* webkitAccessibleTableGetColumnDescription(AtkTable* table, gint column) 225 259 { 260 g_return_val_if_fail(ATK_TABLE(table), 0); 261 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(table), 0); 262 226 263 AtkObject* columnHeader = atk_table_get_column_header(table, column); 227 264 if (columnHeader && ATK_IS_TEXT(columnHeader)) … … 233 270 static const gchar* webkitAccessibleTableGetRowDescription(AtkTable* table, gint row) 234 271 { 272 g_return_val_if_fail(ATK_TABLE(table), 0); 273 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(table), 0); 274 235 275 AtkObject* rowHeader = atk_table_get_row_header(table, row); 236 276 if (rowHeader && ATK_IS_TEXT(rowHeader)) -
trunk/Source/WebCore/accessibility/atk/WebKitAccessibleInterfaceText.cpp
r156295 r156532 551 551 static gchar* webkitAccessibleTextGetText(AtkText* text, gint startOffset, gint endOffset) 552 552 { 553 g_return_val_if_fail(ATK_TEXT(text), 0); 554 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(text), 0); 555 553 556 AccessibilityObject* coreObject = core(text); 554 557 … … 1077 1080 static gchar* webkitAccessibleTextGetTextAfterOffset(AtkText* text, gint offset, AtkTextBoundary boundaryType, gint* startOffset, gint* endOffset) 1078 1081 { 1082 g_return_val_if_fail(ATK_TEXT(text), 0); 1083 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(text), 0); 1084 1079 1085 return webkitAccessibleTextGetTextForOffset(text, offset, boundaryType, GetTextPositionAfter, startOffset, endOffset); 1080 1086 } … … 1082 1088 static gchar* webkitAccessibleTextGetTextAtOffset(AtkText* text, gint offset, AtkTextBoundary boundaryType, gint* startOffset, gint* endOffset) 1083 1089 { 1090 g_return_val_if_fail(ATK_TEXT(text), 0); 1091 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(text), 0); 1092 1084 1093 return webkitAccessibleTextGetTextForOffset(text, offset, boundaryType, GetTextPositionAt, startOffset, endOffset); 1085 1094 } … … 1087 1096 static gchar* webkitAccessibleTextGetTextBeforeOffset(AtkText* text, gint offset, AtkTextBoundary boundaryType, gint* startOffset, gint* endOffset) 1088 1097 { 1098 g_return_val_if_fail(ATK_TEXT(text), 0); 1099 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(text), 0); 1100 1089 1101 return webkitAccessibleTextGetTextForOffset(text, offset, boundaryType, GetTextPositionBefore, startOffset, endOffset); 1090 1102 } 1091 1103 1092 static gunichar webkitAccessibleTextGetCharacterAtOffset(AtkText*, gint) 1093 { 1104 static gunichar webkitAccessibleTextGetCharacterAtOffset(AtkText* text, gint) 1105 { 1106 g_return_val_if_fail(ATK_TEXT(text), 0); 1107 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(text), 0); 1108 1094 1109 notImplemented(); 1095 1110 return 0; … … 1098 1113 static gint webkitAccessibleTextGetCaretOffset(AtkText* text) 1099 1114 { 1115 g_return_val_if_fail(ATK_TEXT(text), 0); 1116 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(text), 0); 1117 1100 1118 // coreObject is the unignored object whose offset the caller is requesting. 1101 1119 // focusedObject is the object with the caret. It is likely ignored -- unless it's a link. … … 1119 1137 static AtkAttributeSet* webkitAccessibleTextGetRunAttributes(AtkText* text, gint offset, gint* startOffset, gint* endOffset) 1120 1138 { 1139 g_return_val_if_fail(ATK_TEXT(text), 0); 1140 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(text), 0); 1141 1121 1142 AccessibilityObject* coreObject = core(text); 1122 1143 AtkAttributeSet* result; … … 1143 1164 static AtkAttributeSet* webkitAccessibleTextGetDefaultAttributes(AtkText* text) 1144 1165 { 1166 g_return_val_if_fail(ATK_TEXT(text), 0); 1167 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(text), 0); 1168 1145 1169 AccessibilityObject* coreObject = core(text); 1146 1170 if (!coreObject || !coreObject->isAccessibilityRenderObject()) … … 1152 1176 static void webkitAccessibleTextGetCharacterExtents(AtkText* text, gint offset, gint* x, gint* y, gint* width, gint* height, AtkCoordType coords) 1153 1177 { 1178 g_return_if_fail(ATK_TEXT(text)); 1179 returnIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(text)); 1180 1154 1181 IntRect extents = textExtents(text, offset, 1, coords); 1155 1182 *x = extents.x(); … … 1161 1188 static void webkitAccessibleTextGetRangeExtents(AtkText* text, gint startOffset, gint endOffset, AtkCoordType coords, AtkTextRectangle* rect) 1162 1189 { 1190 g_return_if_fail(ATK_TEXT(text)); 1191 returnIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(text)); 1192 1163 1193 IntRect extents = textExtents(text, startOffset, endOffset - startOffset, coords); 1164 1194 rect->x = extents.x(); … … 1170 1200 static gint webkitAccessibleTextGetCharacterCount(AtkText* text) 1171 1201 { 1202 g_return_val_if_fail(ATK_TEXT(text), 0); 1203 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(text), 0); 1204 1172 1205 return accessibilityObjectLength(core(text)); 1173 1206 } … … 1175 1208 static gint webkitAccessibleTextGetOffsetAtPoint(AtkText* text, gint x, gint y, AtkCoordType) 1176 1209 { 1210 g_return_val_if_fail(ATK_TEXT(text), 0); 1211 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(text), 0); 1212 1177 1213 // FIXME: Use the AtkCoordType 1178 1214 // TODO: Is it correct to ignore range.length? … … 1184 1220 static gint webkitAccessibleTextGetNSelections(AtkText* text) 1185 1221 { 1222 g_return_val_if_fail(ATK_TEXT(text), 0); 1223 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(text), 0); 1224 1186 1225 AccessibilityObject* coreObject = core(text); 1187 1226 VisibleSelection selection = coreObject->selection(); … … 1202 1241 static gchar* webkitAccessibleTextGetSelection(AtkText* text, gint selectionNum, gint* startOffset, gint* endOffset) 1203 1242 { 1243 g_return_val_if_fail(ATK_TEXT(text), 0); 1244 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(text), 0); 1245 1204 1246 // WebCore does not support multiple selection, so anything but 0 does not make sense for now. 1205 1247 if (selectionNum) … … 1219 1261 } 1220 1262 1221 static gboolean webkitAccessibleTextAddSelection(AtkText*, gint, gint) 1222 { 1263 static gboolean webkitAccessibleTextAddSelection(AtkText* text, gint, gint) 1264 { 1265 g_return_val_if_fail(ATK_TEXT(text), FALSE); 1266 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(text), FALSE); 1267 1223 1268 notImplemented(); 1224 1269 return FALSE; … … 1227 1272 static gboolean webkitAccessibleTextSetSelection(AtkText* text, gint selectionNum, gint startOffset, gint endOffset) 1228 1273 { 1274 g_return_val_if_fail(ATK_TEXT(text), FALSE); 1275 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(text), FALSE); 1276 1229 1277 // WebCore does not support multiple selection, so anything but 0 does not make sense for now. 1230 1278 if (selectionNum) … … 1263 1311 static gboolean webkitAccessibleTextRemoveSelection(AtkText* text, gint selectionNum) 1264 1312 { 1313 g_return_val_if_fail(ATK_TEXT(text), FALSE); 1314 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(text), FALSE); 1315 1265 1316 // WebCore does not support multiple selection, so anything but 0 does not make sense for now. 1266 1317 if (selectionNum) … … 1279 1330 static gboolean webkitAccessibleTextSetCaretOffset(AtkText* text, gint offset) 1280 1331 { 1332 g_return_val_if_fail(ATK_TEXT(text), FALSE); 1333 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(text), FALSE); 1334 1281 1335 AccessibilityObject* coreObject = core(text); 1282 1283 1336 if (!coreObject->isAccessibilityRenderObject()) 1284 1337 return FALSE; -
trunk/Source/WebCore/accessibility/atk/WebKitAccessibleInterfaceValue.cpp
r155854 r156532 25 25 #include "AccessibilityObject.h" 26 26 #include "HTMLNames.h" 27 #include "WebKitAccessibleUtil.h" 27 28 #include "WebKitAccessibleWrapperAtk.h" 28 29 … … 39 40 static void webkitAccessibleValueGetCurrentValue(AtkValue* value, GValue* gValue) 40 41 { 42 g_return_if_fail(ATK_VALUE(value)); 43 returnIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(value)); 44 41 45 memset(gValue, 0, sizeof(GValue)); 42 46 g_value_init(gValue, G_TYPE_FLOAT); … … 46 50 static void webkitAccessibleValueGetMaximumValue(AtkValue* value, GValue* gValue) 47 51 { 52 g_return_if_fail(ATK_VALUE(value)); 53 returnIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(value)); 54 48 55 memset(gValue, 0, sizeof(GValue)); 49 56 g_value_init(gValue, G_TYPE_FLOAT); … … 53 60 static void webkitAccessibleValueGetMinimumValue(AtkValue* value, GValue* gValue) 54 61 { 62 g_return_if_fail(ATK_VALUE(value)); 63 returnIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(value)); 64 55 65 memset(gValue, 0, sizeof(GValue)); 56 66 g_value_init(gValue, G_TYPE_FLOAT); … … 60 70 static gboolean webkitAccessibleValueSetCurrentValue(AtkValue* value, const GValue* gValue) 61 71 { 72 g_return_val_if_fail(ATK_VALUE(value), FALSE); 73 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(value), FALSE); 74 62 75 double newValue; 63 76 if (G_VALUE_HOLDS_DOUBLE(gValue)) … … 78 91 newValue = g_value_get_uint(gValue); 79 92 else 80 return false;93 return FALSE; 81 94 82 95 AccessibilityObject* coreObject = core(value); … … 94 107 static void webkitAccessibleValueGetMinimumIncrement(AtkValue* value, GValue* gValue) 95 108 { 109 g_return_if_fail(ATK_VALUE(value)); 110 returnIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(value)); 111 96 112 memset(gValue, 0, sizeof(GValue)); 97 113 g_value_init(gValue, G_TYPE_FLOAT); -
trunk/Source/WebCore/accessibility/atk/WebKitAccessibleUtil.h
r144636 r156532 34 34 } 35 35 36 // An existing accessibility object is considered to be invalid whether it's already 37 // detached or if it's not but just updating the layout will detach it anyway. 38 #define returnIfWebKitAccessibleIsInvalid(webkitAccessible) G_STMT_START { \ 39 if (!webkitAccessible || webkitAccessibleIsDetached(webkitAccessible)) { \ 40 return; \ 41 } else { \ 42 webkitAccessibleGetAccessibilityObject(webkitAccessible)->updateBackingStore(); \ 43 if (webkitAccessibleIsDetached(webkitAccessible)) \ 44 return; \ 45 }; } G_STMT_END 46 47 #define returnValIfWebKitAccessibleIsInvalid(webkitAccessible, val) G_STMT_START { \ 48 if (!webkitAccessible || webkitAccessibleIsDetached(webkitAccessible)) { \ 49 return (val); \ 50 } else { \ 51 webkitAccessibleGetAccessibilityObject(webkitAccessible)->updateBackingStore(); \ 52 if (webkitAccessibleIsDetached(webkitAccessible)) \ 53 return (val); \ 54 }; } G_STMT_END 55 36 56 AtkAttributeSet* addToAtkAttributeSet(AtkAttributeSet*, const char* name, const char* value); 37 57 -
trunk/Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp
r156530 r156532 97 97 } 98 98 99 static AccessibilityObject* core(WebKitAccessible* accessible)100 {101 if (!accessible)102 return 0;103 104 return accessible->m_object;105 }106 107 99 static AccessibilityObject* core(AtkObject* object) 108 100 { … … 110 102 return 0; 111 103 112 return core(WEBKIT_ACCESSIBLE(object));104 return webkitAccessibleGetAccessibilityObject(WEBKIT_ACCESSIBLE(object)); 113 105 } 114 106 115 107 static const gchar* webkitAccessibleGetName(AtkObject* object) 116 108 { 109 g_return_val_if_fail(WEBKIT_IS_ACCESSIBLE(object), 0); 110 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(object), 0); 111 117 112 AccessibilityObject* coreObject = core(object); 113 118 114 if (!coreObject->isAccessibilityRenderObject()) 119 115 return cacheAndReturnAtkProperty(object, AtkCachedAccessibleName, coreObject->stringValue()); … … 170 166 static const gchar* webkitAccessibleGetDescription(AtkObject* object) 171 167 { 168 g_return_val_if_fail(WEBKIT_IS_ACCESSIBLE(object), 0); 169 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(object), 0); 170 172 171 AccessibilityObject* coreObject = core(object); 173 172 Node* node = 0; … … 273 272 static AtkObject* webkitAccessibleGetParent(AtkObject* object) 274 273 { 274 g_return_val_if_fail(WEBKIT_IS_ACCESSIBLE(object), 0); 275 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(object), 0); 276 275 277 // Check first if the parent has been already set. 276 278 AtkObject* accessibleParent = ATK_OBJECT_CLASS(webkitAccessibleParentClass)->get_parent(object); … … 320 322 static gint webkitAccessibleGetNChildren(AtkObject* object) 321 323 { 324 g_return_val_if_fail(WEBKIT_IS_ACCESSIBLE(object), 0); 325 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(object), 0); 326 322 327 AccessibilityObject* coreObject = core(object); 323 328 … … 357 362 static AtkObject* webkitAccessibleRefChild(AtkObject* object, gint index) 358 363 { 364 g_return_val_if_fail(WEBKIT_IS_ACCESSIBLE(object), 0); 365 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(object), 0); 366 359 367 if (index < 0) 360 368 return 0; … … 421 429 static gint webkitAccessibleGetIndexInParent(AtkObject* object) 422 430 { 431 g_return_val_if_fail(WEBKIT_IS_ACCESSIBLE(object), -1); 432 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(object), -1); 433 423 434 AccessibilityObject* coreObject = core(object); 424 435 AccessibilityObject* parent = coreObject->parentObjectUnignored(); … … 453 464 static AtkAttributeSet* webkitAccessibleGetAttributes(AtkObject* object) 454 465 { 466 g_return_val_if_fail(WEBKIT_IS_ACCESSIBLE(object), 0); 467 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(object), 0); 468 455 469 AtkAttributeSet* attributeSet = 0; 456 470 #if PLATFORM(GTK) … … 627 641 static AtkRole webkitAccessibleGetRole(AtkObject* object) 628 642 { 643 g_return_val_if_fail(WEBKIT_IS_ACCESSIBLE(object), ATK_ROLE_UNKNOWN); 644 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(object), ATK_ROLE_UNKNOWN); 645 629 646 AccessibilityObject* coreObject = core(object); 630 647 … … 767 784 static AtkStateSet* webkitAccessibleRefStateSet(AtkObject* object) 768 785 { 786 g_return_val_if_fail(WEBKIT_IS_ACCESSIBLE(object), 0); 787 769 788 AtkStateSet* stateSet = ATK_OBJECT_CLASS(webkitAccessibleParentClass)->ref_state_set(object); 770 789 AccessibilityObject* coreObject = core(object); 790 791 // Make sure the layout is updated to really know whether the object 792 // is defunct or not, so we can return the proper state. 793 coreObject->updateBackingStore(); 771 794 772 795 if (coreObject == fallbackObject()) { … … 786 809 static AtkRelationSet* webkitAccessibleRefRelationSet(AtkObject* object) 787 810 { 811 g_return_val_if_fail(WEBKIT_IS_ACCESSIBLE(object), 0); 812 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(object), 0); 813 788 814 AtkRelationSet* relationSet = ATK_OBJECT_CLASS(webkitAccessibleParentClass)->ref_relation_set(object); 789 815 AccessibilityObject* coreObject = core(object); … … 806 832 static const gchar* webkitAccessibleGetObjectLocale(AtkObject* object) 807 833 { 834 g_return_val_if_fail(WEBKIT_IS_ACCESSIBLE(object), 0); 835 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE(object), 0); 836 837 AccessibilityObject* coreObject = core(object); 838 if (!coreObject) 839 return 0; 840 808 841 if (ATK_IS_DOCUMENT(object)) { 809 AccessibilityObject* coreObject = core(object);810 if (!coreObject)811 return 0;812 813 842 // TODO: Should we fall back on lang xml:lang when the following comes up empty? 814 843 String language = coreObject->language(); … … 1097 1126 ASSERT(accessible->m_object); 1098 1127 1099 if ( core(accessible)->roleValue() == WebAreaRole)1128 if (accessible->m_object->roleValue() == WebAreaRole) 1100 1129 g_signal_emit_by_name(accessible, "state-change", "defunct", true); 1101 1130 … … 1104 1133 // detachment. 1105 1134 accessible->m_object = fallbackObject(); 1135 } 1136 1137 bool webkitAccessibleIsDetached(WebKitAccessible* accessible) 1138 { 1139 ASSERT(accessible->m_object); 1140 return accessible->m_object == fallbackObject(); 1106 1141 } 1107 1142 -
trunk/Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.h
r144636 r156532 78 78 void webkitAccessibleDetach(WebKitAccessible*); 79 79 80 bool webkitAccessibleIsDetached(WebKitAccessible*); 81 80 82 AtkObject* webkitAccessibleGetFocusedElement(WebKitAccessible*); 81 83
Note: See TracChangeset
for help on using the changeset viewer.