Bug 457845

Summary: AccessibleName property of SWF controls is not visible to ATs
Product: [Mono] UI Automation Reporter: Brian Merrell <bgmerrell>
Component: Winforms - GeneralAssignee: E-mail List <mono-a11y-bugs>
Status: REOPENED --- QA Contact: E-mail List <mono-a11y-qa>
Severity: Normal    
Priority: P2 - High CC: cachen
Version: Release 0.9.1   
Target Milestone: Release 1.1   
Hardware: All   
OS: Linux   
Whiteboard:
Found By: Integration Test Services Priority:
Business Priority: Blocker: ---
Marketing QA Status: --- IT Deployment: ---
Bug Depends on: 459223, 486721    
Bug Blocks:    
Attachments: StatusStrip sample with AccessibleName property
wip patch
wip patch for Mono WinForms
Updated patch against uia2atk

Description Brian Merrell 2008-12-10 01:45:14 UTC
PROBLEM STATEMENT

In Gtk, you can use something like widget.Accessible.Name = "foo" (gtk#) or widget.get_accessible().set_name("foo") (pygtk) to explicitly set the accessible name of a widget.  This name then appears as the "name" for widget's accessible in an accessibility tool (AT)

REPRO

1. Open Accerciser and click on the "Interface Viewer" tab
2. Run uia2atk/test/samples/gtktextview.py
3. Browse to the TextView in Accerciser's left pane
4. Observe that the TextView accessible's name is "explicitly set name".  This is because of line 24 of the sample's code which is "self.bar.get_accessible().set_name("explicitly set name")"
5. Run uia2atk/test/samples/textbox.py
6. Browse to the accessible of the first TextBox (labeled "Normal TextBox) in Accerciser (which is actually listed last in accerciser)

RESULTS

The TextBox accessible has no name despite having the following code on line 30 of the textbox.py sample:

self.textbox1.AccessibleName = "explicitly set name"

EXPECTED RESULTS

I would expect the TextBox accessible's name to be "explicitly set name", like in the Gtk example in the REPRO steps.

COMMENTS 

I believe Mario has already started working on this.  It was discussed in IRC and on the mono-a11y mailling list on Dec 9th (today).
Comment 1 Brad Taylor 2008-12-15 19:28:07 UTC
I think Mario and Mike have done everything needed to have this working.
Comment 2 Mario Carrion 2008-12-15 20:38:36 UTC
Reopening.
Comment 3 Mario Carrion 2008-12-15 22:51:18 UTC
Dependency fixed.
Comment 4 Brian Merrell 2009-01-20 18:30:59 UTC
Still an issue in:

[   ] mono-uia-123523-237.i586.rpm               20-Jan-2009 08:31   40K    
[   ] mono-winforms-123877-307.i586.rpm          20-Jan-2009 08:31  2.4M  
[   ] uiaatkbridge-123670-428.i586.rpm           20-Jan-2009 08:31   71K  
[   ] uiautomationwinforms-123761-451.i586.rpm   20-Jan-2009 08:31  163K

Reopening.
Comment 5 Brad Taylor 2009-01-20 19:09:26 UTC
Unassigning.  We'll look at this starting next iteration (tomorrow).
Comment 6 Sanford Armstrong 2009-01-21 15:48:45 UTC
Taking bug, adding hours.
Comment 7 Sanford Armstrong 2009-02-05 23:13:14 UTC
Unassigning from myself; I won't be working these this iteration.
Comment 8 Neville Gao 2009-03-02 03:44:56 UTC
As MSDN says:
http://msdn.microsoft.com/en-us/library/ms748367.aspx
"The Name property should never contain the textual contents of the edit control."

So NameProperty of TextBox should be empty.
Comment 9 Brian Merrell 2009-03-18 18:54:51 UTC
I am not saying that the name property of the accessible should be the textual contents of the edit control.  I am saying that the name property of the accessible should be able to be explicitly set using the AccessibleName property of the TextBox control.  This is done in the sample code like this:

self.textbox1.AccessibleName = "explicitly set name" 

There is also a Label control in the sample application that has an explicitly set name and that is working as expected now.  The TextBox, however, still has an empty name instead of the expected name "explicitly set name".
Comment 10 Sanford Armstrong 2009-03-18 19:01:53 UTC
We could be emulating Windows behavior here, will need to check.  Perhaps for TextBox AccessibleName is not used in this way?
Comment 11 calen chen 2009-05-04 06:42:24 UTC
Created attachment 289596 [details]
StatusStrip sample with AccessibleName property

StatusStrip and Items on StatusStrip are not working with AccessibleName property as theirs Name
Comment 12 Brian Merrell 2009-05-15 15:05:37 UTC
(In reply to comment #10)
> We could be emulating Windows behavior here, will need to check.  Perhaps for
> TextBox AccessibleName is not used in this way?

Yes, this would match the behavior in Windows.  Bumping to P2.
Comment 13 Andres Aragoneses 2009-07-10 22:13:29 UTC
From IRC:

(12:19:32 PM) knocte: bgmerrell: ping
(01:08:15 PM) bgmerrell: knocte: pong
(01:09:39 PM) knocte: bgmerrell: hey, I'm working on bug 457845 and I'm finding a lot of inconsistencies if we develop it
(01:09:50 PM) knocte: like, for instance, the name of a combobox
(01:10:02 PM) knocte: the accessibleName would override the name of the selected option
(01:10:09 PM) knocte: which I don't know if it is good
(01:13:52 PM) bgmerrell: i guess we could see what Gtk and Windows do in that circumstance
(01:14:44 PM) bgmerrell: i don't have UISpy installed on windows right now, so that might take me a little while
(01:15:02 PM) bgmerrell: i think i have to install visual studio for that..
(01:15:21 PM) knocte: no need, you can use UIAVerify
(01:15:58 PM) bgmerrell: alright
(01:56:11 PM) bgmerrell: still setting up some stuff on windows
(01:56:17 PM) bgmerrell: afk for a bit, though
(03:29:42 PM) knocte: bgmerrell: another thing, should an accessible override its name by AccessibleName if LabeledBy is being used?
(03:31:25 PM) knocte: sandy|away: catching up now with old IRC logs... what I proposed on the iteration meeting was to do the backports all them all in one commit at the end of the iteration, since people disagreed, I was just going to do them in a commit-per-commit basis at the end of the iteration, which is what I did in the previous 1.0 iteration and worked (no risk, and merge worked)
(05:22:58 PM) bgmerrell: knocte: both .NET and Gtk show the explicitly set name for the combo box when it is set, regardless of any item being selected or not
(05:23:36 PM) knocte: bgmerrell: cool, and how about setting accessibleName, and later, select a different option?
(05:25:13 PM) bgmerrell: knocte: tried that too, the combo box accessible retains the explicitly set name
(05:25:45 PM) knocte: oh no
(05:25:55 PM) knocte: that will be hard to get right
(05:26:28 PM) bgmerrell: seems like that when the name is explicitly set, everything else just gets ignored
(05:26:41 PM) knocte: ok, thanks for the info
(05:26:44 PM) bgmerrell: i am going to check your LabeledBy question now.. 
(05:26:51 PM) bgmerrell: you mean just set both properties?
(05:30:45 PM) knocte: yep, am seeing that if I set LabeledBy, I don't get events of the NameProperty being update anymore when I set AccessibleName
(05:30:50 PM) knocte: and I don't know if that's correct
(05:44:42 PM) mario: that is not correct, because AccessibleName has higher priority than Name/LabeledBy
(05:46:36 PM) knocte: ok, thanks mario
(05:46:43 PM) bgmerrell: okay, cool
(05:47:05 PM) bgmerrell: (how do I set the LabeledBy property btw?)
(05:47:19 PM) mario: at least in Controls with AccessibleName set
(05:47:52 PM) mario: LabeledBy is set by those controls that don't return null, for example, a Label next to a TextBox
(05:48:01 PM) mario: TextBox is LabeledBy Label
(05:48:25 PM) bgmerrell: yeah, but is there a way to set it explicitly like you can with control.AccessibleName?
(05:48:25 PM) mario: so, the name (if textbox.AccessibleName) is not available will be Label.Name
(05:48:38 PM) mario: not in winforms, in moonlight you can
(05:48:44 PM) bgmerrell: ah, alright.
Comment 14 Andres Aragoneses 2009-07-17 23:16:52 UTC
Still working on this issue... 20 tests are broken with my current WIP patches.
Comment 15 Andres Aragoneses 2009-07-28 14:15:08 UTC
Created attachment 308553 [details]
wip patch

With this patch, the feature is working, but we get 20 tests failing (regressions). I'm working on fixing them.
Comment 16 Andres Aragoneses 2009-07-28 14:50:53 UTC
Created attachment 308575 [details]
wip patch for Mono WinForms

Hugh, almost forgot to upload the SWF patch...
Comment 17 Andres Aragoneses 2009-07-28 22:06:46 UTC
Created attachment 308665 [details]
Updated patch against uia2atk

- Down to 15 failures, yay!
- Cleaned up, no CWLs.