Index: ui/accessibility/platform/ax_platform_node_win.cc |
diff --git a/ui/accessibility/platform/ax_platform_node_win.cc b/ui/accessibility/platform/ax_platform_node_win.cc |
index 9aa621d744534c20dd673fb7bb182d82566a2a4c..45febe854b95fcef69d659740b6088c101864e0d 100644 |
--- a/ui/accessibility/platform/ax_platform_node_win.cc |
+++ b/ui/accessibility/platform/ax_platform_node_win.cc |
@@ -474,7 +474,17 @@ STDMETHODIMP AXPlatformNodeWin::get_accName( |
AXPlatformNodeWin* target; |
COM_OBJECT_VALIDATE_VAR_ID_1_ARG_AND_GET_TARGET(var_id, name, target); |
- return target->GetStringAttributeAsBstr(ui::AX_ATTR_NAME, name); |
+ HRESULT result = target->GetStringAttributeAsBstr(ui::AX_ATTR_NAME, name); |
+ if (FAILED(result) && MSAARole() == ROLE_SYSTEM_DOCUMENT && GetParent()) { |
+ // Hack: Some versions of JAWS crash if they get an empty name on |
+ // a document that's the child of an iframe, so always return a |
+ // nonempty string for this role. https://crbug.com/583057 |
+ base::string16 str = L" "; |
+ |
+ *name = SysAllocString(str.c_str()); |
+ DCHECK(*name); |
+ } |
+ return result; |
} |
STDMETHODIMP AXPlatformNodeWin::get_accParent( |