<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>