<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=windows-1252">
</head>
<body text="#000000" bgcolor="#FFFFFF">
Looks good to me<br>
<br>
-Pankaj<br>
<br>
<div class="moz-cite-prefix">On 02/03/20 9:43 AM, Ambarish Rapte
wrote:<br>
</div>
<blockquote type="cite"
cite="mid:6a888db2-0eaa-48fb-b27a-f324bf50056f@default">
<meta http-equiv="Content-Type" content="text/html;
charset=windows-1252">
<meta name="Generator" content="Microsoft Word 15 (filtered
medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:Consolas;
panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}
pre
{mso-style-priority:99;
mso-style-link:"HTML Preformatted Char";
margin:0in;
margin-bottom:.0001pt;
font-size:10.0pt;
font-family:Consolas;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
{mso-style-priority:34;
margin-top:0in;
margin-right:0in;
margin-bottom:0in;
margin-left:.5in;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
span.HTMLPreformattedChar
{mso-style-name:"HTML Preformatted Char";
mso-style-priority:99;
mso-style-link:"HTML Preformatted";
font-family:Consolas;}
p.msonormal0, li.msonormal0, div.msonormal0
{mso-style-name:msonormal;
mso-margin-top-alt:auto;
margin-right:0in;
mso-margin-bottom-alt:auto;
margin-left:0in;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
span.EmailStyle20
{mso-style-type:personal;
font-family:"Calibri",sans-serif;
color:windowtext;}
span.EmailStyle21
{mso-style-type:personal;
font-family:"Calibri",sans-serif;
color:#1F497D;}
span.EmailStyle23
{mso-style-type:personal;
font-family:"Calibri",sans-serif;
color:windowtext;}
span.EmailStyle25
{mso-style-type:personal-compose;
font-family:"Calibri",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
/* List Definitions */
@list l0
{mso-list-id:265621828;
mso-list-type:hybrid;
mso-list-template-ids:813605082 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;}
@list l0:level2
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;}
@list l0:level3
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l0:level4
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;}
@list l0:level5
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;}
@list l0:level6
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l0:level7
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;}
@list l0:level8
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;}
@list l0:level9
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
ol
{margin-bottom:0in;}
ul
{margin-bottom:0in;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
<div class="WordSection1">
<p class="MsoNormal">Hi Pankaj,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Please take a look at the updated fix: <a
href="http://cr.openjdk.java.net/%7Earapte/a11y/8226253/webrev.03"
moz-do-not-send="true">http://cr.openjdk.java.net/~arapte/a11y/8226253/webrev.03</a>
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Changes in the webrev.03:<o:p></o:p></p>
<ol style="margin-top:0in" start="1" type="1">
<li class="MsoListParagraph"
style="margin-left:0in;mso-list:l0 level1 lfo1">Addressed
review comments given by Pankaj.<o:p></o:p></li>
<li class="MsoListParagraph"
style="margin-left:0in;mso-list:l0 level1 lfo1">The fix
suggested in webrev.01 had below two issues, both are fixed
in webrev.03.<o:p></o:p></li>
<ol style="margin-top:0in" start="1" type="a">
<li class="MsoListParagraph"
style="margin-left:0in;mso-list:l0 level2 lfo1">Correct
information of a component was not passed to screen reader
<br>
when there are multiple invisible components are added to
a ButtonGroup.<o:p></o:p></li>
<li class="MsoListParagraph"
style="margin-left:0in;mso-list:l0 level2 lfo1">An item of
JComboBox which is not currently showing on screen but<br>
will be shown on next key press was not read by screen
reader.<o:p></o:p></li>
</ol>
</ol>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Regards,<o:p></o:p></p>
<p class="MsoNormal">Ambarish<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div style="border:none;border-top:solid #E1E1E1
1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b>From:</b> Pankaj Bansal <br>
<b>Sent:</b> Tuesday, October 1, 2019 9:55 PM<br>
<b>To:</b> Ambarish Rapte
<a class="moz-txt-link-rfc2396E" href="mailto:ambarish.rapte@oracle.com"><ambarish.rapte@oracle.com></a>;
<a class="moz-txt-link-abbreviated" href="mailto:awt-dev@openjdk.java.net">awt-dev@openjdk.java.net</a><br>
<b>Subject:</b> RE: <AWT Dev> [14] RFR : 8226253 :
JAWS reports wrong number of radio buttons when buttons
are hidden.<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="color:#1F497D">Hi Ambarish,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">I have few
observations<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">I think
underscore (_) should be removed from newly added function
names as it is not there in any other function.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">if (beforeIndex
>= childrenCount) { <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">this check is
not required inside else condition in
get_nonVisibleChildrenCountBeforeIndex(AccessibleContext
parentAC, int beforeIndex as this case is being handled by
the if part of loop.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">You should be
able to reuse get_NonVisibleTargetCountBeforeIndex(Object[]
targets, int indexBefore) inside
getAccessibleRelationTargetCount instead of writing
separate loop there.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">|| beforeIndex
< 0<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">is added in if
loop in
get_nonVisibleChildrenCountBeforeIndex(AccessibleContext
parentAC, int beforeIndex), but not added in
get_NonVisibleTargetCountBeforeIndex(Object[] targets, int
indexBefore) {. Is this intentional?<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Regards,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Pankaj<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #E1E1E1
1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b>From:</b> Ambarish Rapte <br>
<b>Sent:</b> Tuesday, September 10, 2019 11:30 PM<br>
<b>To:</b> <a href="mailto:awt-dev@openjdk.java.net"
moz-do-not-send="true">awt-dev@openjdk.java.net</a><br>
<b>Subject:</b> <AWT Dev> [14] RFR : 8226253 : JAWS
reports wrong number of radio buttons when buttons are
hidden.<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Hi,<o:p></o:p></p>
<p class="MsoNormal">Please review this fix,<o:p></o:p></p>
<p class="MsoNormal">JBS: <a
href="https://bugs.openjdk.java.net/browse/JDK-8226253"
moz-do-not-send="true">https://bugs.openjdk.java.net/browse/JDK-8226253</a>
<o:p></o:p></p>
<p class="MsoNormal">Webrev: <a
href="http://cr.openjdk.java.net/%7Earapte/a11y/8226253/webrev.01/"
moz-do-not-send="true">http://cr.openjdk.java.net/~arapte/a11y/8226253/webrev.01/</a>
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Issue:<o:p></o:p></p>
<p class="MsoNormal">AccessibleContext.getAccessibleChildrenCount()
returns number of all Accessible children, but does not take
visibility of a child component in consideration.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Fix:<o:p></o:p></p>
<p class="MsoNormal">Do not consider children that are not
showing when providing accessible children count and when
providing an accessible child of the component to screen
reader.<o:p></o:p></p>
<p class="MsoNormal">This change is needed for both
AccessibleContext and AccessibleRelationSet.<o:p></o:p></p>
<p class="MsoNormal">The newly added methods do not result in
creating the AccessibleContext of children components earlier
than before the fix.<o:p></o:p></p>
<p class="MsoNormal">The AccessibleContext gets created in
AccessibilityEventMonitor.AccessibilityEventListener.installListeners(AccessibleContext)
method, which occurs before the newly added methods get
executed.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Verification:<o:p></o:p></p>
<p class="MsoNormal">Tested the fix with JList with a custom
AccessibleContext(custom ListModel) to hide non visible
components, JRadioButton, JCheckBox, JToggleButton,
JRadioButtonMenuItem, JCheckBoxMenuItem, JComboBox and
SwingSet2.<o:p></o:p></p>
<p class="MsoNormal">Did not find any misbehavior with the fix.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Some pointers provided by Sergey in offline
discussion:<o:p></o:p></p>
<p class="MsoNormal">1. Fix the issue on Java Access Bridge
side. => <a
href="http://cr.openjdk.java.net/%7Earapte/a11y/8226253/webrev.01/"
moz-do-not-send="true">http://cr.openjdk.java.net/~arapte/a11y/8226253/webrev.01/</a><o:p></o:p></p>
<p class="MsoNormal">2. Confirm that the fix does not create the
AccessibleContext of children earlier than before the fix.
=> Does not happen<o:p></o:p></p>
<p class="MsoNormal">3. Test JList with a custom
AccessibleContext. => Tested by adding a custom ListModel
to JList. JList.AccessibleJList uses the ListModel for
getAccessibleChildrenCount() and getAccessibleChild()<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Regards,<o:p></o:p></p>
<p class="MsoNormal">Ambarish<o:p></o:p></p>
</div>
</blockquote>
<br>
</body>
</html>