<?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>45687</bug_id>
          
          <creation_ts>2010-09-13 11:01:50 -0700</creation_ts>
          <short_desc>[GTK] Code simplification needed in Atk Wrapper</short_desc>
          <delta_ts>2010-09-13 20:16:08 -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>Linux</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>0</everconfirmed>
          <reporter name="Mario Sanchez Prada">mario</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>mrobinson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>278314</commentid>
    <comment_count>0</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2010-09-13 11:01:50 -0700</bug_when>
    <thetext>The following piece of code in WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp should be simplified:

    // Set preliminar values for start and end offsets
    startOffset = nodeRangeStart.offsetInContainerNode();
    endOffset = nodeRangeEnd.offsetInContainerNode();

    // If the end node is different then the start node, iterate over
    // those among them to build the effective value for endOffset
    if (nodeRangeStart.anchorNode() != nodeRangeEnd.anchorNode()) {
        RefPtr&lt;Range&gt; nodeRange = Range::create(node-&gt;document(), nodeRangeStart, positionBeforeNode(nodeRangeEnd.anchorNode()));
        for (TextIterator it(nodeRange.get()); !it.atEnd(); it.advance()) {
            RefPtr&lt;Range&gt; range = it.range();
            if (range-&gt;startContainer()-&gt;isTextNode())
                endOffset += range-&gt;endOffset();
        }
    }


This could be simplified using TextIterator::rangeLength(), making the code cleaner and more readable</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>278316</commentid>
    <comment_count>1</comment_count>
      <attachid>67433</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2010-09-13 11:09:08 -0700</bug_when>
    <thetext>Created attachment 67433
Patch to fix this issue

Attaching a patch to fix this &quot;issue&quot; by simplifying the code as expected:

  Use TextIterator::rangeLength() to calculate endOffset

     * accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:
     (getSelectionOffsetsForObject): Don&apos;t manually iterate over a
     artificial new range but just call TextIterator::rangeLength on
     the range created between the start and end positions.

Hence, asking for review (and for the cq+ flag as well ;-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>278321</commentid>
    <comment_count>2</comment_count>
      <attachid>67433</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-09-13 11:16:53 -0700</bug_when>
    <thetext>Comment on attachment 67433
Patch to fix this issue

Awesome. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>278671</commentid>
    <comment_count>3</comment_count>
      <attachid>67433</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-13 20:16:03 -0700</bug_when>
    <thetext>Comment on attachment 67433
Patch to fix this issue

Clearing flags on attachment: 67433

Committed r67435: &lt;http://trac.webkit.org/changeset/67435&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>278672</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-13 20:16:08 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67433</attachid>
            <date>2010-09-13 11:09:08 -0700</date>
            <delta_ts>2010-09-13 20:16:03 -0700</delta_ts>
            <desc>Patch to fix this issue</desc>
            <filename>0001-2010-09-13-Mario-Sanchez-Prada-msanchez-igalia.com.patch</filename>
            <type>text/plain</type>
            <size>3226</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSBhNjE2YjA1ZWFjYTBiMDA0ZGQ5YWMxMzBmYTkxYmMzYTZmOGUyYmFlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBNb24sIDEzIFNlcCAyMDEwIDIwOjA1OjA5ICswMjAwClN1YmplY3Q6IFtQQVRD
SF0gMjAxMC0wOS0xMyAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+
CgogICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBbR1RLXSBDb2Rl
IHNpbXBsaWZpY2F0aW9uIG5lZWRlZCBpbiBBdGsgV3JhcHBlcgogICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTY4NwoKICAgICAgICBVc2UgVGV4dEl0ZXJh
dG9yOjpyYW5nZUxlbmd0aCgpIHRvIGNhbGN1bGF0ZSBlbmRPZmZzZXQKCiAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHA6CiAgICAgICAg
KGdldFNlbGVjdGlvbk9mZnNldHNGb3JPYmplY3QpOiBEb24ndCBtYW51YWxseSBpdGVyYXRlIG92
ZXIgYQogICAgICAgIGFydGlmaWNpYWwgbmV3IHJhbmdlIGJ1dCBqdXN0IGNhbGwgVGV4dEl0ZXJh
dG9yOjpyYW5nZUxlbmd0aCBvbgogICAgICAgIHRoZSByYW5nZSBjcmVhdGVkIGJldHdlZW4gdGhl
IHN0YXJ0IGFuZCBlbmQgcG9zaXRpb25zLgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxNCArKysrKysrKysrKysrKwogLi4uL2d0ay9B
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHAgICAgICAgICAgfCAgIDE2ICsrKy0tLS0t
LS0tLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25z
KC0pCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCA3YWQ1ODdmLi5jNjBiODJmIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEwLTA5LTEzICBNYXJpbyBT
YW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbR1RLXSBDb2RlIHNpbXBsaWZpY2F0aW9uIG5l
ZWRlZCBpbiBBdGsgV3JhcHBlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDU2ODcKKworICAgICAgICBVc2UgVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0
aCgpIHRvIGNhbGN1bGF0ZSBlbmRPZmZzZXQKKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvZ3Rr
L0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmNwcDoKKyAgICAgICAgKGdldFNlbGVjdGlv
bk9mZnNldHNGb3JPYmplY3QpOiBEb24ndCBtYW51YWxseSBpdGVyYXRlIG92ZXIgYQorICAgICAg
ICBhcnRpZmljaWFsIG5ldyByYW5nZSBidXQganVzdCBjYWxsIFRleHRJdGVyYXRvcjo6cmFuZ2VM
ZW5ndGggb24KKyAgICAgICAgdGhlIHJhbmdlIGNyZWF0ZWQgYmV0d2VlbiB0aGUgc3RhcnQgYW5k
IGVuZCBwb3NpdGlvbnMuCisKIDIwMTAtMDktMTMgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0Bj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJBdGsuY3BwIGIvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlckF0ay5jcHAKaW5kZXggOTgwZTE2ZS4uMDFkZGRkMSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHAKKysr
IGIvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0
ay5jcHAKQEAgLTEzOTcsMjAgKzEzOTcsMTAgQEAgc3RhdGljIHZvaWQgZ2V0U2VsZWN0aW9uT2Zm
c2V0c0Zvck9iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0LCBWaXNpYmwKICAg
ICBlbHNlCiAgICAgICAgIG5vZGVSYW5nZUVuZCA9IHNlbFJhbmdlLT5lbmRQb3NpdGlvbigpOwog
Ci0gICAgLy8gU2V0IHByZWxpbWluYXIgdmFsdWVzIGZvciBzdGFydCBhbmQgZW5kIG9mZnNldHMK
KyAgICAvLyBTZXQgdmFsdWVzIGZvciBzdGFydCBhbmQgZW5kIG9mZnNldHMKKyAgICBSZWZQdHI8
UmFuZ2U+IG5vZGVSYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgbm9kZVJh
bmdlU3RhcnQsIG5vZGVSYW5nZUVuZCk7CiAgICAgc3RhcnRPZmZzZXQgPSBub2RlUmFuZ2VTdGFy
dC5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKTsKLSAgICBlbmRPZmZzZXQgPSBub2RlUmFuZ2VFbmQu
b2Zmc2V0SW5Db250YWluZXJOb2RlKCk7Ci0KLSAgICAvLyBJZiB0aGUgZW5kIG5vZGUgaXMgZGlm
ZmVyZW50IHRoZW4gdGhlIHN0YXJ0IG5vZGUsIGl0ZXJhdGUgb3ZlcgotICAgIC8vIHRob3NlIGFt
b25nIHRoZW0gdG8gYnVpbGQgdGhlIGVmZmVjdGl2ZSB2YWx1ZSBmb3IgZW5kT2Zmc2V0Ci0gICAg
aWYgKG5vZGVSYW5nZVN0YXJ0LmFuY2hvck5vZGUoKSAhPSBub2RlUmFuZ2VFbmQuYW5jaG9yTm9k
ZSgpKSB7Ci0gICAgICAgIFJlZlB0cjxSYW5nZT4gbm9kZVJhbmdlID0gUmFuZ2U6OmNyZWF0ZShu
b2RlLT5kb2N1bWVudCgpLCBub2RlUmFuZ2VTdGFydCwgcG9zaXRpb25CZWZvcmVOb2RlKG5vZGVS
YW5nZUVuZC5hbmNob3JOb2RlKCkpKTsKLSAgICAgICAgZm9yIChUZXh0SXRlcmF0b3IgaXQobm9k
ZVJhbmdlLmdldCgpKTsgIWl0LmF0RW5kKCk7IGl0LmFkdmFuY2UoKSkgewotICAgICAgICAgICAg
UmVmUHRyPFJhbmdlPiByYW5nZSA9IGl0LnJhbmdlKCk7Ci0gICAgICAgICAgICBpZiAocmFuZ2Ut
PnN0YXJ0Q29udGFpbmVyKCktPmlzVGV4dE5vZGUoKSkKLSAgICAgICAgICAgICAgICBlbmRPZmZz
ZXQgKz0gcmFuZ2UtPmVuZE9mZnNldCgpOwotICAgICAgICB9Ci0gICAgfQorICAgIGVuZE9mZnNl
dCA9IHN0YXJ0T2Zmc2V0ICsgVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChub2RlUmFuZ2UuZ2V0
KCkpOwogfQogCiBzdGF0aWMgZ2ludCB3ZWJraXRfYWNjZXNzaWJsZV90ZXh0X2dldF9uX3NlbGVj
dGlvbnMoQXRrVGV4dCogdGV4dCkKLS0gCjEuNy4wLjQKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>