<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>45793</bug_id>
          
          <creation_ts>2010-09-14 17:36:11 -0700</creation_ts>
          <short_desc>AX: when text is auto-truncated, accessibility bounds are wrong</short_desc>
          <delta_ts>2010-09-15 12:45:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="chris fleizach">cfleizach</reporter>
          <assigned_to name="chris fleizach">cfleizach</assigned_to>
          <cc>abarth</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>eric</cc>
    
    <cc>mario</cc>
    
    <cc>mihaip</cc>
    
    <cc>mrobinson</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>279273</commentid>
    <comment_count>0</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-09-14 17:36:11 -0700</bug_when>
    <thetext>When text-ellipsis is used, the AX bounds of the static text are wrong</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279285</commentid>
    <comment_count>1</comment_count>
      <attachid>67627</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-09-14 17:54:10 -0700</bug_when>
    <thetext>Created attachment 67627
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279286</commentid>
    <comment_count>2</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-09-14 17:55:05 -0700</bug_when>
    <thetext>To accomplish this, I added a new absoluteQuads method to RenderText that supports clippingToEllipsis. That&apos;s used in accessibility, but not elsewhere.

Also pulled out the common code to find the box of an ellipsis so it could be re-used by the new method</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279288</commentid>
    <comment_count>3</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-09-14 17:55:44 -0700</bug_when>
    <thetext>&lt;rdar://problem/8359426&gt; AX: when text is auto-truncated, accessibility bounds are wrong</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279574</commentid>
    <comment_count>4</comment_count>
      <attachid>67627</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-09-15 09:21:01 -0700</bug_when>
    <thetext>Comment on attachment 67627
patch

&gt; Index: WebCore/accessibility/AccessibilityRenderObject.cpp
&gt; ===================================================================
&gt; --- WebCore/accessibility/AccessibilityRenderObject.cpp	(revision 67422)
&gt; +++ WebCore/accessibility/AccessibilityRenderObject.cpp	(working copy)
&gt; @@ -1392,7 +1392,9 @@
&gt;      // absoluteFocusRingQuads will query the hierarchy below this element, which for large webpages can be very slow.
&gt;      // For a web area, which will have the most elements of any element, absoluteQuads should be used.
&gt;      Vector&lt;FloatQuad&gt; quads;
&gt; -    if (obj-&gt;isText() || isWebArea())
&gt; +    if (obj-&gt;isText())
&gt; +        toRenderText(obj)-&gt;absoluteQuads(quads, true);

This illustrates why we try to avoid boolean parameters; it&apos;s hard to know what &apos;true&apos; means without looking at the method declaration.

&gt; Index: WebCore/rendering/RenderText.cpp
&gt; ===================================================================
&gt; --- WebCore/rendering/RenderText.cpp	(revision 67421)
&gt; +++ WebCore/rendering/RenderText.cpp	(working copy)
&gt; @@ -310,10 +310,46 @@
&gt;      }
&gt;  }
&gt;  
&gt; +static IntRect ellipsisRectForBox(InlineTextBox* box, unsigned startPos, unsigned endPos)
&gt; +{
&gt; +    if (!box)
&gt; +        return IntRect();
&gt; +    
&gt; +    unsigned short truncation = box-&gt;truncation();
&gt; +    if (truncation == cNoTruncation)
&gt; +        return IntRect();
&gt; +    
&gt; +    IntRect rect;
&gt; +    if (EllipsisBox* ellipsis = box-&gt;root()-&gt;ellipsisBox()) {
&gt; +        int ePos = min&lt;int&gt;(endPos - box-&gt;start(), box-&gt;len());
&gt; +        int sPos = max&lt;int&gt;(startPos - box-&gt;start(), 0);

I find the ePos/sPos abbreviations a little obtuse, and I think it would make logical sense to compute start before end.

&gt; +        // The ellipsis should be considered to be selected if the end of
&gt; +        // the selection is past the beginning of the truncation and the
&gt; +        // beginning of the selection is before or at the beginning of the
&gt; +        // truncation.
&gt; +        if (ePos &gt;= truncation &amp;&amp; sPos &lt;= truncation)
&gt; +            return ellipsis-&gt;selectionRect(0, 0);

&gt; +void RenderText::absoluteQuads(Vector&lt;FloatQuad&gt;&amp; quads, bool clipToEllipsis)

Maybe use an enum rather than bool for the param to make the call sites clearer.

&gt; Index: LayoutTests/accessibility/ellipsis-text.html
&gt; ===================================================================


&gt; +            // The width of the ellipsis text should be short.
&gt; +            document.getElementById(&quot;text-ellipsis&quot;).focus();
&gt; +            var textContainer = accessibilityController.focusedElement;
&gt; +            var textNode = textContainer.childAtIndex(0);
&gt; +            shouldBe(&quot;textNode.width&quot;, &quot;42&quot;);
&gt; +
&gt; +            // The width of non-ellipsis&apos;d text should be longer.
&gt; +            document.getElementById(&quot;text-noellipsis&quot;).focus();
&gt; +            textContainer = accessibilityController.focusedElement;
&gt; +            textNode = textContainer.childAtIndex(0);
&gt; +            shouldBe(&quot;textNode.width&quot;, &quot;375&quot;);

Hardcoding pixel widths is sensitive to font rendering differences on platforms. Is there a more robust way to do this (like comparing two strings, one truncated, and one not (but with an ellipsis in the source)?

r=me with those issues addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279580</commentid>
    <comment_count>5</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-09-15 09:32:24 -0700</bug_when>
    <thetext>(In reply to comment #4)

Thanks will address all of those issues</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279594</commentid>
    <comment_count>6</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-09-15 10:09:11 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/67561</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279606</commentid>
    <comment_count>7</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-09-15 10:31:09 -0700</bug_when>
    <thetext>emailed xan why this test didn&apos;t work on GTK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279615</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-15 10:41:45 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/67561 might have broken GTK Linux 32-bit Release
The following changes are on the blame list:
http://trac.webkit.org/changeset/67560
http://trac.webkit.org/changeset/67561</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279619</commentid>
    <comment_count>9</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-09-15 10:48:01 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; http://trac.webkit.org/changeset/67561 might have broken GTK Linux 32-bit Release
&gt; The following changes are on the blame list:
&gt; http://trac.webkit.org/changeset/67560
&gt; http://trac.webkit.org/changeset/67561

Since accessibility/ellipsis-text.html failed, I assume it&apos;s this patch&apos;s fault.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279620</commentid>
    <comment_count>10</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-09-15 10:50:19 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; http://trac.webkit.org/changeset/67561 might have broken GTK Linux 32-bit Release
&gt; &gt; The following changes are on the blame list:
&gt; &gt; http://trac.webkit.org/changeset/67560
&gt; &gt; http://trac.webkit.org/changeset/67561
&gt; 
&gt; Since accessibility/ellipsis-text.html failed, I assume it&apos;s this patch&apos;s fault.

I will add this test to the GTK skipped list until we figure out why it doesn&apos;t work</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279621</commentid>
    <comment_count>11</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-09-15 10:52:04 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/67563</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279662</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-15 12:45:35 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/67563 might have broken GTK Linux 32-bit Debug
The following changes are on the blame list:
http://trac.webkit.org/changeset/67562
http://trac.webkit.org/changeset/67563</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67627</attachid>
            <date>2010-09-14 17:54:10 -0700</date>
            <delta_ts>2010-09-15 09:21:01 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>9414</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NzUyMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTAtMDktMTQgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBWDogd2hlbiB0ZXh0IGlzIGF1dG8tdHJ1bmNhdGVkLCBhY2Nlc3NpYmlsaXR5IGJvdW5kcyBh
cmUgd3JvbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQ1NzkzCisKKyAgICAgICAgQWxsb3cgYWNjZXNzaWJpbGl0eSB0byByZXRyaWV2ZSB0aGUgYWJz
b2x1dGVRdWFkcyBvZiBhIHRleHQgbm9kZSB0aGF0CisgICAgICAgIGNsaXBzIHRvIHRoZSBlbGxp
cHNpcy4KKworICAgICAgICBUZXN0OiBhY2Nlc3NpYmlsaXR5L2VsbGlwc2lzLXRleHQuaHRtbAor
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmJvdW5kaW5nQm94
UmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZWxsaXBzaXNSZWN0Rm9yQm94KToKKyAgICAgICAgICAgTWFrZSBhIGNvbW1vbiBtZXRo
b2QgdG8gcmV0cmlldmUgdGhlIGVsbGlwc2lzIHJlY3QuCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUZXh0OjphYnNvbHV0ZVF1YWRzKToKKyAgICAgICAgICAgRGVmYXVsdCBpbnRvIHRoZSBhYnNv
bHV0ZVF1YWRzIG1ldGhvZCB0aGF0IGFsbG93cyBmb3IgZWxsaXBzaXMgY2xpcHBpbmcuCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpzZWxlY3Rpb25SZWN0Rm9yUmVwYWludCk6CisgICAg
ICAgICAgIFVzZSB0aGUgY29tbW9uIG1ldGhvZCBmb3IgcmV0cmlldmluZyB0aGUgZWxsaXBzaXMu
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuaDoKKwogMjAxMC0wOS0xNCAgQWRhbSBC
YXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIEF0dGVtcHRlZCBDaHJvbWl1bSBi
dWlsZCBmaXguICBUaGUgY29tcGlsZXIgY2FuJ3QgdGVsbCB0aGF0CkluZGV4OiBXZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCShyZXZp
c2lvbiA2NzQyMikKKysrIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM5Miw3ICsxMzkyLDkgQEAKICAgICAvLyBh
YnNvbHV0ZUZvY3VzUmluZ1F1YWRzIHdpbGwgcXVlcnkgdGhlIGhpZXJhcmNoeSBiZWxvdyB0aGlz
IGVsZW1lbnQsIHdoaWNoIGZvciBsYXJnZSB3ZWJwYWdlcyBjYW4gYmUgdmVyeSBzbG93LgogICAg
IC8vIEZvciBhIHdlYiBhcmVhLCB3aGljaCB3aWxsIGhhdmUgdGhlIG1vc3QgZWxlbWVudHMgb2Yg
YW55IGVsZW1lbnQsIGFic29sdXRlUXVhZHMgc2hvdWxkIGJlIHVzZWQuCiAgICAgVmVjdG9yPEZs
b2F0UXVhZD4gcXVhZHM7Ci0gICAgaWYgKG9iai0+aXNUZXh0KCkgfHwgaXNXZWJBcmVhKCkpCisg
ICAgaWYgKG9iai0+aXNUZXh0KCkpCisgICAgICAgIHRvUmVuZGVyVGV4dChvYmopLT5hYnNvbHV0
ZVF1YWRzKHF1YWRzLCB0cnVlKTsKKyAgICBlbHNlIGlmIChpc1dlYkFyZWEoKSkKICAgICAgICAg
b2JqLT5hYnNvbHV0ZVF1YWRzKHF1YWRzKTsKICAgICBlbHNlCiAgICAgICAgIG9iai0+YWJzb2x1
dGVGb2N1c1JpbmdRdWFkcyhxdWFkcyk7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAko
cmV2aXNpb24gNjc0MjEpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzEwLDEwICszMTAsNDYgQEAKICAgICB9CiB9CiAKK3N0YXRpYyBJbnRS
ZWN0IGVsbGlwc2lzUmVjdEZvckJveChJbmxpbmVUZXh0Qm94KiBib3gsIHVuc2lnbmVkIHN0YXJ0
UG9zLCB1bnNpZ25lZCBlbmRQb3MpCit7CisgICAgaWYgKCFib3gpCisgICAgICAgIHJldHVybiBJ
bnRSZWN0KCk7CisgICAgCisgICAgdW5zaWduZWQgc2hvcnQgdHJ1bmNhdGlvbiA9IGJveC0+dHJ1
bmNhdGlvbigpOworICAgIGlmICh0cnVuY2F0aW9uID09IGNOb1RydW5jYXRpb24pCisgICAgICAg
IHJldHVybiBJbnRSZWN0KCk7CisgICAgCisgICAgSW50UmVjdCByZWN0OworICAgIGlmIChFbGxp
cHNpc0JveCogZWxsaXBzaXMgPSBib3gtPnJvb3QoKS0+ZWxsaXBzaXNCb3goKSkgeworICAgICAg
ICBpbnQgZVBvcyA9IG1pbjxpbnQ+KGVuZFBvcyAtIGJveC0+c3RhcnQoKSwgYm94LT5sZW4oKSk7
CisgICAgICAgIGludCBzUG9zID0gbWF4PGludD4oc3RhcnRQb3MgLSBib3gtPnN0YXJ0KCksIDAp
OworICAgICAgICAvLyBUaGUgZWxsaXBzaXMgc2hvdWxkIGJlIGNvbnNpZGVyZWQgdG8gYmUgc2Vs
ZWN0ZWQgaWYgdGhlIGVuZCBvZgorICAgICAgICAvLyB0aGUgc2VsZWN0aW9uIGlzIHBhc3QgdGhl
IGJlZ2lubmluZyBvZiB0aGUgdHJ1bmNhdGlvbiBhbmQgdGhlCisgICAgICAgIC8vIGJlZ2lubmlu
ZyBvZiB0aGUgc2VsZWN0aW9uIGlzIGJlZm9yZSBvciBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZQor
ICAgICAgICAvLyB0cnVuY2F0aW9uLgorICAgICAgICBpZiAoZVBvcyA+PSB0cnVuY2F0aW9uICYm
IHNQb3MgPD0gdHJ1bmNhdGlvbikKKyAgICAgICAgICAgIHJldHVybiBlbGxpcHNpcy0+c2VsZWN0
aW9uUmVjdCgwLCAwKTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIEludFJlY3QoKTsKK30KKyAg
ICAKK3ZvaWQgUmVuZGVyVGV4dDo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVh
ZHMsIGJvb2wgY2xpcFRvRWxsaXBzaXMpCit7CisgICAgZm9yIChJbmxpbmVUZXh0Qm94KiBib3gg
PSBmaXJzdFRleHRCb3goKTsgYm94OyBib3ggPSBib3gtPm5leHRUZXh0Qm94KCkpIHsKKyAgICAg
ICAgSW50UmVjdCBib3VuZGFyaWVzID0gYm94LT5jYWxjdWxhdGVCb3VuZGFyaWVzKCk7CisKKyAg
ICAgICAgLy8gU2hvcnRlbiB0aGUgd2lkdGggb2YgdGhpcyB0ZXh0IGJveCBpZiBpdCBlbmRzIGlu
IGFuIGVsbGlwc2lzLgorICAgICAgICBJbnRSZWN0IGVsbGlwc2lzUmVjdCA9IChjbGlwVG9FbGxp
cHNpcykgPyBlbGxpcHNpc1JlY3RGb3JCb3goYm94LCAwLCB0ZXh0TGVuZ3RoKCkpIDogSW50UmVj
dCgpOworICAgICAgICBpZiAoIWVsbGlwc2lzUmVjdC5pc0VtcHR5KCkpCisgICAgICAgICAgICBi
b3VuZGFyaWVzLnNldFdpZHRoKGVsbGlwc2lzUmVjdC5yaWdodCgpIC0gYm91bmRhcmllcy54KCkp
OworICAgICAgICBxdWFkcy5hcHBlbmQobG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJlY3QoYm91
bmRhcmllcykpKTsKKyAgICB9Cit9CisgICAgCiB2b2lkIFJlbmRlclRleHQ6OmFic29sdXRlUXVh
ZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzKQogewotICAgIGZvciAoSW5saW5lVGV4dEJveCog
Ym94ID0gZmlyc3RUZXh0Qm94KCk7IGJveDsgYm94ID0gYm94LT5uZXh0VGV4dEJveCgpKQotICAg
ICAgICBxdWFkcy5hcHBlbmQobG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJlY3QoYm94LT5jYWxj
dWxhdGVCb3VuZGFyaWVzKCkpKSk7CisgICAgYWJzb2x1dGVRdWFkcyhxdWFkcywgZmFsc2UpOwog
fQogCiB2b2lkIFJlbmRlclRleHQ6OmFic29sdXRlUXVhZHNGb3JSYW5nZShWZWN0b3I8RmxvYXRR
dWFkPiYgcXVhZHMsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQsIGJvb2wgdXNlU2VsZWN0
aW9uSGVpZ2h0KQpAQCAtMTI3MCw3ICsxMzA2LDcgQEAKIAogICAgIGlmIChzZWxlY3Rpb25TdGF0
ZSgpID09IFNlbGVjdGlvbk5vbmUpCiAgICAgICAgIHJldHVybiBJbnRSZWN0KCk7Ci0gICAgUmVu
ZGVyQmxvY2sqIGNiID0gIGNvbnRhaW5pbmdCbG9jaygpOworICAgIFJlbmRlckJsb2NrKiBjYiA9
IGNvbnRhaW5pbmdCbG9jaygpOwogICAgIGlmICghY2IpCiAgICAgICAgIHJldHVybiBJbnRSZWN0
KCk7CiAKQEAgLTEyOTUsMjEgKzEzMzEsNyBAQAogICAgIEludFJlY3QgcmVjdDsKICAgICBmb3Ig
KElubGluZVRleHRCb3gqIGJveCA9IGZpcnN0VGV4dEJveCgpOyBib3g7IGJveCA9IGJveC0+bmV4
dFRleHRCb3goKSkgewogICAgICAgICByZWN0LnVuaXRlKGJveC0+c2VsZWN0aW9uUmVjdCgwLCAw
LCBzdGFydFBvcywgZW5kUG9zKSk7Ci0KLSAgICAgICAgLy8gQ2hlY2sgaWYgdGhlcmUgYXJlIGVs
bGlwc2lzIHdoaWNoIGZhbGwgd2l0aGluIHRoZSBzZWxlY3Rpb24uCi0gICAgICAgIHVuc2lnbmVk
IHNob3J0IHRydW5jYXRpb24gPSBib3gtPnRydW5jYXRpb24oKTsKLSAgICAgICAgaWYgKHRydW5j
YXRpb24gIT0gY05vVHJ1bmNhdGlvbikgewotICAgICAgICAgICAgaWYgKEVsbGlwc2lzQm94KiBl
bGxpcHNpcyA9IGJveC0+cm9vdCgpLT5lbGxpcHNpc0JveCgpKSB7Ci0gICAgICAgICAgICAgICAg
aW50IGVQb3MgPSBtaW48aW50PihlbmRQb3MgLSBib3gtPnN0YXJ0KCksIGJveC0+bGVuKCkpOwot
ICAgICAgICAgICAgICAgIGludCBzUG9zID0gbWF4PGludD4oc3RhcnRQb3MgLSBib3gtPnN0YXJ0
KCksIDApOwotICAgICAgICAgICAgICAgIC8vIFRoZSBlbGxpcHNpcyBzaG91bGQgYmUgY29uc2lk
ZXJlZCB0byBiZSBzZWxlY3RlZCBpZiB0aGUgZW5kIG9mCi0gICAgICAgICAgICAgICAgLy8gdGhl
IHNlbGVjdGlvbiBpcyBwYXN0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHRydW5jYXRpb24gYW5kIHRo
ZQotICAgICAgICAgICAgICAgIC8vIGJlZ2lubmluZyBvZiB0aGUgc2VsZWN0aW9uIGlzIGJlZm9y
ZSBvciBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZQotICAgICAgICAgICAgICAgIC8vIHRydW5jYXRp
b24uCi0gICAgICAgICAgICAgICAgaWYgKGVQb3MgPj0gdHJ1bmNhdGlvbiAmJiBzUG9zIDw9IHRy
dW5jYXRpb24pCi0gICAgICAgICAgICAgICAgICAgIHJlY3QudW5pdGUoZWxsaXBzaXMtPnNlbGVj
dGlvblJlY3QoMCwgMCkpOwotICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgICAgIHJlY3Qu
dW5pdGUoZWxsaXBzaXNSZWN0Rm9yQm94KGJveCwgc3RhcnRQb3MsIGVuZFBvcykpOwogICAgIH0K
IAogICAgIGlmIChjbGlwVG9WaXNpYmxlQ29udGVudCkKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
LmgJKHJldmlzaW9uIDY3NDIxKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCSh3
b3JraW5nIGNvcHkpCkBAIC02MCw2ICs2MCw3IEBACiAgICAgdm9pZCBhYnNvbHV0ZVJlY3RzRm9y
UmFuZ2UoVmVjdG9yPEludFJlY3Q+JiwgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSAwLCB1bnNpZ25l
ZCBlbmRPZmZzZXQgPSBVSU5UX01BWCwgYm9vbCB1c2VTZWxlY3Rpb25IZWlnaHQgPSBmYWxzZSk7
CiAKICAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYpOwor
ICAgIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wgY2xpcFRvRWxs
aXBzaXMpOwogICAgIHZvaWQgYWJzb2x1dGVRdWFkc0ZvclJhbmdlKFZlY3RvcjxGbG9hdFF1YWQ+
JiwgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSAwLCB1bnNpZ25lZCBlbmRPZmZzZXQgPSBVSU5UX01B
WCwgYm9vbCB1c2VTZWxlY3Rpb25IZWlnaHQgPSBmYWxzZSk7CiAKICAgICB2aXJ0dWFsIFZpc2li
bGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNvbnN0IEludFBvaW50Jik7CkluZGV4OiBMYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2VsbGlwc2lzLXRleHQtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZWxsaXBzaXMtdGV4dC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2VsbGlwc2lzLXRl
eHQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACit0ZXh0CitNeSBX
cml0aW5nIE5vb2sgZm9yIGlQYWQuIE1vcmUgdGV4dCwgbW9yZSB0ZXh0LCBtb3JlIHRleHQuCitN
eSBXcml0aW5nIE5vb2sgZm9yIGlQYWQuIE1vcmUgdGV4dCwgbW9yZSB0ZXh0LCBtb3JlIHRleHQu
Cit0ZXh0CitUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0IHRoZSBib3VuZHMgb2YgdGV4dCB0aGF0
IG92ZXJmbG93cyB3aXRoIGVsbGlwc2lzIGlzIGNvcnJlY3QgKHNob3J0ZW5lZCB0byB0aGUgZWxs
aXBzaXMgdGhhdCBpcykuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHRl
eHROb2RlLndpZHRoIGlzIDQyCitQQVNTIHRleHROb2RlLndpZHRoIGlzIDM3NQorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvZWxsaXBzaXMtdGV4dC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvZWxsaXBzaXMtdGV4dC5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9lbGxpcHNpcy10ZXh0Lmh0bWwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNDIgQEAKKzxodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgor
PHNjcmlwdD4KK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSBmYWxzZTsKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5IGlkPSJib2R5Ij4KKyAKK3RleHQKKzxkaXYgaWQ9InRleHQtZWxsaXBz
aXMiIHRhYmluZGV4PSIwIiBzdHlsZT0id2lkdGg6NTBweDsgdGV4dC1vdmVyZmxvdzplbGxpcHNp
czsgb3ZlcmZsb3c6aGlkZGVuOyB3aGl0ZS1zcGFjZTogbm93cmFwOyIgY2xhc3M9Im5hbWUiPk15
IFdyaXRpbmcgTm9vayBmb3IgaVBhZC4gTW9yZSB0ZXh0LCBtb3JlIHRleHQsIG1vcmUgdGV4dC48
L2Rpdj4KKzxkaXYgaWQ9InRleHQtbm9lbGxpcHNpcyIgdGFiaW5kZXg9IjAiIHN0eWxlPSJ3aWR0
aDo1MHB4OyB3aGl0ZS1zcGFjZTogbm93cmFwOyIgY2xhc3M9Im5hbWUiPk15IFdyaXRpbmcgTm9v
ayBmb3IgaVBhZC4gTW9yZSB0ZXh0LCBtb3JlIHRleHQsIG1vcmUgdGV4dC48L2Rpdj4KK3RleHQK
KworICAgIDxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorICAgICAKKyAgICA8c2NyaXB0PgorICAgICAgICBpZiAod2luZG93LmFjY2Vzc2liaWxp
dHlDb250cm9sbGVyKSB7CisgICAgICAgICAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IG1ha2Vz
IHN1cmUgdGhhdCB0aGUgYm91bmRzIG9mIHRleHQgdGhhdCBvdmVyZmxvd3Mgd2l0aCBlbGxpcHNp
cyBpcyBjb3JyZWN0IChzaG9ydGVuZWQgdG8gdGhlIGVsbGlwc2lzIHRoYXQgaXMpLiIpOworCisg
ICAgICAgICAgICAvLyBUaGUgd2lkdGggb2YgdGhlIGVsbGlwc2lzIHRleHQgc2hvdWxkIGJlIHNo
b3J0LgorICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRleHQtZWxsaXBzaXMi
KS5mb2N1cygpOworICAgICAgICAgICAgdmFyIHRleHRDb250YWluZXIgPSBhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICAgICAgICAgIHZhciB0ZXh0Tm9kZSA9IHRl
eHRDb250YWluZXIuY2hpbGRBdEluZGV4KDApOworICAgICAgICAgICAgc2hvdWxkQmUoInRleHRO
b2RlLndpZHRoIiwgIjQyIik7CisKKyAgICAgICAgICAgIC8vIFRoZSB3aWR0aCBvZiBub24tZWxs
aXBzaXMnZCB0ZXh0IHNob3VsZCBiZSBsb25nZXIuCisgICAgICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgidGV4dC1ub2VsbGlwc2lzIikuZm9jdXMoKTsKKyAgICAgICAgICAgIHRleHRD
b250YWluZXIgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICAg
ICAgICAgIHRleHROb2RlID0gdGV4dENvbnRhaW5lci5jaGlsZEF0SW5kZXgoMCk7CisgICAgICAg
ICAgICBzaG91bGRCZSgidGV4dE5vZGUud2lkdGgiLCAiMzc1Iik7CisKKyAgICAgICAgfQorICAg
ICAgICBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworICAgIDwvc2NyaXB0PgorCis8c2NyaXB0
IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDY3NTIwKQorKysgTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDktMTQgIENo
cmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBWDogd2hlbiB0ZXh0IGlzIGF1dG8tdHJ1bmNh
dGVkLCBhY2Nlc3NpYmlsaXR5IGJvdW5kcyBhcmUgd3JvbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1NzkzCisKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L2VsbGlwc2lzLXRleHQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L2VsbGlwc2lzLXRleHQuaHRtbDogQWRkZWQuCisKIDIwMTAtMDktMTQgIE1paGFpIFBh
cnBhcml0YSAgPG1paGFpcEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVG9u
eSBDaGFuZy4K
</data>
<flag name="review"
          id="56980"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>