<?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>72525</bug_id>
          
          <creation_ts>2011-11-16 11:00:26 -0800</creation_ts>
          <short_desc>[GTK] Consider parent AtkObject in webkit_accessible_get_parent(), if already set</short_desc>
          <delta_ts>2011-11-17 03:50:20 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>72588</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mario Sanchez Prada">mario</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>mrobinson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>504056</commentid>
    <comment_count>0</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2011-11-16 11:00:26 -0800</bug_when>
    <thetext>In AccessibilityObjectWrapperATK.cpp:webkit_accessible_get_parent(), it would be good if we would check for an already set parent AtkObject before looking for it through the a11y hierarchy, for the two following reasons:

R1. Efficiency: 
-----------------
Whenever an a11y object is recognized as the child of another one, a call to atk_object_set_parent(child, parent) is performed (see webkit_accessible_ref_child()), which makes possible to retrieve the parent in the future by calling AtkObject class&apos;s implementation of atk_object_get_parent(). Also, if at some point the hierarchy changes, future calls to atk_object_ref_accessible_child() will cause atk_object_set_parent() to be called again, updating the pointers as needed. Thus, it looks like it makes sense to return that parent object when it&apos;s already set instead of looking for it throughout the hierarchy each time atk_object_get_parent() is invoked.


R2. WebKit2:
----------------
So far, in WK1, it was fine to always look for the parent AtkObject throughout the hierarchy because whenever the root object was reached, some special checks and tricks would be done to find the AtkObject associated to the WebView&apos;s parent (a GtkWidget, so the associated AtkObject would come from GAIL) -see atkParentOfRootObject() in the ATK wrapper-, hence creating the illusion that the AtkParent of the root node in the WebKit world was that other one from the GTK world. However, with WebKit2 this is no longer possible, since the root a11y object will belong to the Web Process, while the GTK world will belong to the UI Process, so atkParentOfRootObject() will always return NULL.

However, if we make webkit_accessible_get_parent() first check if a parent has been already set through atk_object_set_parent(), we could make it so the AtkPlug object that we have in the Web Process (which is, together with the AtkSocket in the UI Process, what allows to communicate the two processes from an a11y POV) could call to atk_object_set_parent (axWkRootObject, atkPlug), that way forcing the root object from WebKit to easily recognize it as its parent and therefore returning it when something called to atk_object_get_parent(axWkRootObject), therefore fixing the bottom-up navigation throughout the whole a11y tree in WebKit2 (the magic to go up from the Web to the UI process would be done by the AtkSocket/AtkPlug combo).


I&apos;ve tried some experiments so far and seem to work pretty well. Will be uploading a patch soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504068</commentid>
    <comment_count>1</comment_count>
      <attachid>115411</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2011-11-16 11:07:54 -0800</bug_when>
    <thetext>Created attachment 115411
Patch proposal + unit test

Patch implementing the idea explained before, plus an unit test to prove that it actually makes a difference :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504662</commentid>
    <comment_count>2</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2011-11-17 01:47:20 -0800</bug_when>
    <thetext>This blocks a11y support in WebKit2GTK+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504670</commentid>
    <comment_count>3</comment_count>
      <attachid>115411</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2011-11-17 02:06:04 -0800</bug_when>
    <thetext>Comment on attachment 115411
Patch proposal + unit test

View in context: https://bugs.webkit.org/attachment.cgi?id=115411&amp;action=review

&gt; Source/WebKit/gtk/tests/testatk.c:1669
&gt; +    g_assert(atk_object_get_parent(axRoot) == axButton);

I think it would be useful to expand the test a bit:

- Add the view to an offscreen window. Get the parent. Should be the window.
- Now set_parent to the button, like you do now. Now get_parent should be the button, not the window.

Hope that makes sense, that way we check the base case works and that the transition happens correctly.

Looks good to me otherwise!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504677</commentid>
    <comment_count>4</comment_count>
      <attachid>115545</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2011-11-17 02:30:23 -0800</bug_when>
    <thetext>Created attachment 115545
Patch proposal + unit test

New patch addressing the issues commented by Xan</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504685</commentid>
    <comment_count>5</comment_count>
      <attachid>115545</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2011-11-17 02:46:34 -0800</bug_when>
    <thetext>Comment on attachment 115545
Patch proposal + unit test

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504718</commentid>
    <comment_count>6</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2011-11-17 03:50:20 -0800</bug_when>
    <thetext>Committed r100597: &lt;http://trac.webkit.org/changeset/100597&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115411</attachid>
            <date>2011-11-16 11:07:54 -0800</date>
            <delta_ts>2011-11-17 02:30:23 -0800</delta_ts>
            <desc>Patch proposal + unit test</desc>
            <filename>0001-2011-11-16-Mario-Sanchez-Prada-msanchez-igalia.com.patch</filename>
            <type>text/plain</type>
            <size>6104</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSA4MmMxYmRkYWQ5NDY4ODg0YmI4Mjk0YzQ1MWIwNzllYjlhOTk4OTY1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBXZWQsIDE2IE5vdiAyMDExIDIwOjA1OjMxICswMTAwClN1YmplY3Q6IFtQQVRD
SF0gMjAxMS0xMS0xNiAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+
CgogICAgICAgIFtHVEtdIENvbnNpZGVyIHBhcmVudCBBdGtPYmplY3QgaW4gd2Via2l0X2FjY2Vz
c2libGVfZ2V0X3BhcmVudCgpLCBpZiBhbHJlYWR5IHNldAogICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjUyNQoKICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KCiAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlckF0ay5jcHA6CiAgICAgICAgKHdlYmtpdF9hY2Nlc3NpYmxlX2dldF9wYXJlbnQp
OiBDYWxsIHRvIHRoZSBpbXBsZW1lbnRhdGlvbiBvZgogICAgICAgIGF0a19vYmplY3RfZ2V0X3Bh
cmVudCBpbiBBdGtPYmplY3QgY2xhc3MgdG8gY2hlY2sgd2hldGhlciBhIHBhcmVudAogICAgICAg
IEF0a09iamVjdCBoYXMgYmVlbiBwcmV2aW91c2x5IHNldCwgYmVmb3JlIHRyeWluZyB0byBmaW5k
IG9uZS4KCjIwMTEtMTEtMTYgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgoKICAgICAgICBbR1RLXSBDb25zaWRlciBwYXJlbnQgQXRrT2JqZWN0IGluIHdlYmtpdF9h
Y2Nlc3NpYmxlX2dldF9wYXJlbnQoKSwgaWYgYWxyZWFkeSBzZXQKICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI1MjUKCiAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCgogICAgICAgICogdGVzdHMvdGVzdGF0ay5jOgogICAgICAgICh0ZXN0
V2Via2l0QXRrU2V0UGFyZW50Rm9yT2JqZWN0KTogTmV3IHVuaXQgdGVzdCB0byBjaGVjayB0aGF0
CiAgICAgICAgY2FsbHMgdG8gYXRrX29iamVjdF9nZXRfcGFyZW50KCkgb3ZlciBhIFdlYktpdEdU
SydzIGFjY2Vzc2liaWxpdHkKICAgICAgICB3cmFwcGVyIG9iamVjdCByZXR1cm5zIGl0cyBwYXJl
bnQgQXRrT2JqZWN0IGlmIHByZXZpb3VzbHkgc2V0LgogICAgICAgIChtYWluKTogQWRkZWQgbmV3
IHRlc3QuCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgIDEyICsrKysrKysKIC4uLi9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJB
dGsuY3BwICAgICAgICAgIHwgICAgNiArKysrCiBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTMgKysrKysrKysKIFNvdXJjZS9XZWJLaXQvZ3Rr
L3Rlc3RzL3Rlc3RhdGsuYyAgICAgICAgICAgICAgICAgIHwgICAzMSArKysrKysrKysrKysrKysr
KysrKwogNCBmaWxlcyBjaGFuZ2VkLCA2MiBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3ZDMxZDlhLi5iZmM2ODU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTcg
QEAKIDIwMTEtMTEtMTYgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29t
PgogCisgICAgICAgIFtHVEtdIENvbnNpZGVyIHBhcmVudCBBdGtPYmplY3QgaW4gd2Via2l0X2Fj
Y2Vzc2libGVfZ2V0X3BhcmVudCgpLCBpZiBhbHJlYWR5IHNldAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI1MjUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyQXRrLmNwcDoKKyAgICAgICAgKHdlYmtpdF9hY2Nlc3NpYmxlX2dl
dF9wYXJlbnQpOiBDYWxsIHRvIHRoZSBpbXBsZW1lbnRhdGlvbiBvZgorICAgICAgICBhdGtfb2Jq
ZWN0X2dldF9wYXJlbnQgaW4gQXRrT2JqZWN0IGNsYXNzIHRvIGNoZWNrIHdoZXRoZXIgYSBwYXJl
bnQKKyAgICAgICAgQXRrT2JqZWN0IGhhcyBiZWVuIHByZXZpb3VzbHkgc2V0LCBiZWZvcmUgdHJ5
aW5nIHRvIGZpbmQgb25lLgorCisyMDExLTExLTE2ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNh
bmNoZXpAaWdhbGlhLmNvbT4KKwogICAgICAgICBbR1RLXSBVc2UgR1F1YXJrJ3MgaW4gdGhlIEFU
SyB3cmFwcGVyIHRvIGdldCBhbmQgc2V0IGFyYml0cmFyeSBkYXRhCiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjM5NAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0
ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlckF0ay5jcHAKaW5kZXggZmY0MGRmZi4uYzFlNzU3MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJB
dGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyQXRrLmNwcApAQCAtMjk1LDYgKzI5NSwxMiBAQCBzdGF0aWMgQXRrT2Jq
ZWN0KiBhdGtQYXJlbnRPZlJvb3RPYmplY3QoQXRrT2JqZWN0KiBvYmplY3QpCiAKIHN0YXRpYyBB
dGtPYmplY3QqIHdlYmtpdF9hY2Nlc3NpYmxlX2dldF9wYXJlbnQoQXRrT2JqZWN0KiBvYmplY3Qp
CiB7CisgICAgLy8gQ2hlY2sgZmlyc3QgaWYgdGhlIHBhcmVudCBoYXMgYmVlbiBhbHJlYWR5IHNl
dC4KKyAgICBBdGtPYmplY3QqIGFjY2Vzc2libGVQYXJlbnQgPSBBVEtfT0JKRUNUX0NMQVNTKHdl
YmtpdF9hY2Nlc3NpYmxlX3BhcmVudF9jbGFzcyktPmdldF9wYXJlbnQob2JqZWN0KTsKKyAgICBp
ZiAoYWNjZXNzaWJsZVBhcmVudCkKKyAgICAgICAgcmV0dXJuIGFjY2Vzc2libGVQYXJlbnQ7CisK
KyAgICAvLyBQYXJlbnQgbm90IHNldCB5ZXQsIHNvIHRyeSB0byBmaW5kIGl0IGluIHRoZSBoaWVy
YXJjaHkuCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCA9IGNvcmUob2JqZWN0
KTsKICAgICBpZiAoIWNvcmVPYmplY3QpCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CmluZGV4IDIwNWU4OWQuLmUwYjllYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxOCBA
QAogMjAxMS0xMS0xNiAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+
CiAKKyAgICAgICAgW0dUS10gQ29uc2lkZXIgcGFyZW50IEF0a09iamVjdCBpbiB3ZWJraXRfYWNj
ZXNzaWJsZV9nZXRfcGFyZW50KCksIGlmIGFscmVhZHkgc2V0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjUyNQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvdGVzdGF0ay5jOgorICAgICAgICAo
dGVzdFdlYmtpdEF0a1NldFBhcmVudEZvck9iamVjdCk6IE5ldyB1bml0IHRlc3QgdG8gY2hlY2sg
dGhhdAorICAgICAgICBjYWxscyB0byBhdGtfb2JqZWN0X2dldF9wYXJlbnQoKSBvdmVyIGEgV2Vi
S2l0R1RLJ3MgYWNjZXNzaWJpbGl0eQorICAgICAgICB3cmFwcGVyIG9iamVjdCByZXR1cm5zIGl0
cyBwYXJlbnQgQXRrT2JqZWN0IGlmIHByZXZpb3VzbHkgc2V0LgorICAgICAgICAobWFpbik6IEFk
ZGVkIG5ldyB0ZXN0LgorCisyMDExLTExLTE2ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNo
ZXpAaWdhbGlhLmNvbT4KKwogICAgICAgICBbR1RLXSBEbyBub3QgaGlkZSBhY2Nlc3NpYmlsaXR5
IHJvb3Qgb2JqZWN0IGZyb20gQVQncwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzIzOTAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvdGVz
dHMvdGVzdGF0ay5jIGIvU291cmNlL1dlYktpdC9ndGsvdGVzdHMvdGVzdGF0ay5jCmluZGV4IDUx
ZDhkN2EuLmU0MTE5ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3Rlc3RzL3Rlc3Rh
dGsuYworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay90ZXN0cy90ZXN0YXRrLmMKQEAgLTE2NDIsNiAr
MTY0MiwzNiBAQCBzdGF0aWMgdm9pZCB0ZXN0V2Via2l0QXRrUGFyZW50Rm9yUm9vdE9iamVjdCgp
CiAgICAgZ19vYmplY3RfdW5yZWYoYm94KTsKIH0KIAorc3RhdGljIHZvaWQgdGVzdFdlYmtpdEF0
a1NldFBhcmVudEZvck9iamVjdCgpCit7CisgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdF
QktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOworICAgIGdfb2JqZWN0X3JlZl9z
aW5rKHdlYlZpZXcpOworICAgIEd0a0FsbG9jYXRpb24gYWxsb2NhdGlvbiA9IHsgMCwgMCwgODAw
LCA2MDAgfTsKKyAgICBndGtfd2lkZ2V0X3NpemVfYWxsb2NhdGUoR1RLX1dJREdFVCh3ZWJWaWV3
KSwgJmFsbG9jYXRpb24pOworICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX3N0cmluZyh3ZWJWaWV3
LCBjb250ZW50cywgMCwgMCwgMCk7CisKKyAgICAvKiBXZSBuZWVkIHRvIHVzZSBzb21ldGhpbmcg
YXMgYSBwYXJlbnQgZm9yIHRoZSBhMTF5IG9iamVjdAorICAgICAgIGFzc29jaWF0ZWQgd2l0aCB0
aGUgcm9vdCBvZiB0aGUgRE9NIHRyZWUuICovCisgICAgR3RrV2lkZ2V0KiBidXR0b24gPSBndGtf
YnV0dG9uX25ldygpOworICAgIGdfb2JqZWN0X3JlZl9zaW5rKGJ1dHRvbik7CisKKyAgICBBdGtP
YmplY3QqIGF4QnV0dG9uID0gZ3RrX3dpZGdldF9nZXRfYWNjZXNzaWJsZSAoYnV0dG9uKTsKKyAg
ICBnX2Fzc2VydChBVEtfSVNfT0JKRUNUKGF4QnV0dG9uKSk7CisKKyAgICBBdGtPYmplY3QqIGF4
Um9vdCA9IGd0a193aWRnZXRfZ2V0X2FjY2Vzc2libGUoR1RLX1dJREdFVCh3ZWJWaWV3KSk7Cisg
ICAgZ19hc3NlcnQoQVRLX0lTX09CSkVDVChheFJvb3QpKTsKKworICAgIC8qIFRoZSByb290IG9i
amVjdCBoYXMgbm8gcGFyZW50IGF0IHRoZSBtb21lbnQuICovCisgICAgZ19hc3NlcnQoIWF0a19v
YmplY3RfZ2V0X3BhcmVudChheFJvb3QpKTsKKworICAgIC8qIE1hbnVhbGx5IHNldCB0aGUgYnV0
dG9uJ3MgYTExeSBvYmplY3QgYXMgdGhlIHBhcmVudCBhbmQgY2hlY2suICovCisgICAgYXRrX29i
amVjdF9zZXRfcGFyZW50KGF4Um9vdCwgYXhCdXR0b24pOworICAgIGdfYXNzZXJ0KGF0a19vYmpl
Y3RfZ2V0X3BhcmVudChheFJvb3QpID09IGF4QnV0dG9uKTsKKworICAgIGdfb2JqZWN0X3VucmVm
KGJ1dHRvbik7CisgICAgZ19vYmplY3RfdW5yZWYod2ViVmlldyk7Cit9CisKIGludCBtYWluKGlu
dCBhcmdjLCBjaGFyKiogYXJndikKIHsKICAgICBndGtfdGVzdF9pbml0KCZhcmdjLCAmYXJndiwg
MCk7CkBAIC0xNjcwLDYgKzE3MDAsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3Yp
CiAgICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0L2F0ay9saXN0c09mSXRlbXMiLCB0ZXN0V2Vi
a2l0QXRrTGlzdHNPZkl0ZW1zKTsKICAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQvYXRrL3Rl
eHRDaGFuZ2VkTm90aWZpY2F0aW9ucyIsIHRlc3RXZWJraXRBdGtUZXh0Q2hhbmdlZE5vdGlmaWNh
dGlvbnMpOwogICAgIGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdC9hdGsvcGFyZW50Rm9yUm9vdE9i
amVjdCIsIHRlc3RXZWJraXRBdGtQYXJlbnRGb3JSb290T2JqZWN0KTsKKyAgICBnX3Rlc3RfYWRk
X2Z1bmMoIi93ZWJraXQvYXRrL3NldFBhcmVudEZvck9iamVjdCIsIHRlc3RXZWJraXRBdGtTZXRQ
YXJlbnRGb3JPYmplY3QpOwogICAgIHJldHVybiBnX3Rlc3RfcnVuICgpOwogfQogCi0tIAoxLjcu
Ny4xCgo=
</data>
<flag name="review"
          id="114328"
          type_id="1"
          status="-"
          setter="xan.lopez"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115545</attachid>
            <date>2011-11-17 02:30:23 -0800</date>
            <delta_ts>2011-11-17 02:46:33 -0800</delta_ts>
            <desc>Patch proposal + unit test</desc>
            <filename>0001-2011-11-16-Mario-Sanchez-Prada-msanchez-igalia.com.patch</filename>
            <type>text/plain</type>
            <size>6510</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSBhYjY3OGRlNWZlNzhhNzNhODY4Yzg1OTk0MmY0MzgwMjIzZDQxZjU2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBXZWQsIDE2IE5vdiAyMDExIDIwOjA1OjMxICswMTAwClN1YmplY3Q6IFtQQVRD
SF0gMjAxMS0xMS0xNiAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+
CgogICAgICAgIFtHVEtdIENvbnNpZGVyIHBhcmVudCBBdGtPYmplY3QgaW4gd2Via2l0X2FjY2Vz
c2libGVfZ2V0X3BhcmVudCgpLCBpZiBhbHJlYWR5IHNldAogICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjUyNQoKICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KCiAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlckF0ay5jcHA6CiAgICAgICAgKHdlYmtpdF9hY2Nlc3NpYmxlX2dldF9wYXJlbnQp
OiBDYWxsIHRvIHRoZSBpbXBsZW1lbnRhdGlvbiBvZgogICAgICAgIGF0a19vYmplY3RfZ2V0X3Bh
cmVudCBpbiBBdGtPYmplY3QgY2xhc3MgdG8gY2hlY2sgd2hldGhlciBhIHBhcmVudAogICAgICAg
IEF0a09iamVjdCBoYXMgYmVlbiBwcmV2aW91c2x5IHNldCwgYmVmb3JlIHRyeWluZyB0byBmaW5k
IG9uZS4KCjIwMTEtMTEtMTYgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgoKICAgICAgICBbR1RLXSBDb25zaWRlciBwYXJlbnQgQXRrT2JqZWN0IGluIHdlYmtpdF9h
Y2Nlc3NpYmxlX2dldF9wYXJlbnQoKSwgaWYgYWxyZWFkeSBzZXQKICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI1MjUKCiAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCgogICAgICAgICogdGVzdHMvdGVzdGF0ay5jOgogICAgICAgICh0ZXN0
V2Via2l0QXRrU2V0UGFyZW50Rm9yT2JqZWN0KTogTmV3IHVuaXQgdGVzdCB0byBjaGVjayB0aGF0
CiAgICAgICAgY2FsbHMgdG8gYXRrX29iamVjdF9nZXRfcGFyZW50KCkgb3ZlciBhIFdlYktpdEdU
SydzIGFjY2Vzc2liaWxpdHkKICAgICAgICB3cmFwcGVyIG9iamVjdCByZXR1cm5zIGl0cyBwYXJl
bnQgQXRrT2JqZWN0IGlmIHByZXZpb3VzbHkgc2V0LgogICAgICAgIChtYWluKTogQWRkZWQgbmV3
IHRlc3QuCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgIDEyICsrKysrKwogLi4uL2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0
ay5jcHAgICAgICAgICAgfCAgICA2ICsrKwogU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgIDEzICsrKysrKysKIFNvdXJjZS9XZWJLaXQvZ3RrL3Rl
c3RzL3Rlc3RhdGsuYyAgICAgICAgICAgICAgICAgIHwgICAzOSArKysrKysrKysrKysrKysrKysr
KwogNCBmaWxlcyBjaGFuZ2VkLCA3MCBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCA3ZDMxZDlhLi5iZmM2ODU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTcgQEAK
IDIwMTEtMTEtMTYgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgog
CisgICAgICAgIFtHVEtdIENvbnNpZGVyIHBhcmVudCBBdGtPYmplY3QgaW4gd2Via2l0X2FjY2Vz
c2libGVfZ2V0X3BhcmVudCgpLCBpZiBhbHJlYWR5IHNldAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI1MjUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyQXRrLmNwcDoKKyAgICAgICAgKHdlYmtpdF9hY2Nlc3NpYmxlX2dldF9w
YXJlbnQpOiBDYWxsIHRvIHRoZSBpbXBsZW1lbnRhdGlvbiBvZgorICAgICAgICBhdGtfb2JqZWN0
X2dldF9wYXJlbnQgaW4gQXRrT2JqZWN0IGNsYXNzIHRvIGNoZWNrIHdoZXRoZXIgYSBwYXJlbnQK
KyAgICAgICAgQXRrT2JqZWN0IGhhcyBiZWVuIHByZXZpb3VzbHkgc2V0LCBiZWZvcmUgdHJ5aW5n
IHRvIGZpbmQgb25lLgorCisyMDExLTExLTE2ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNo
ZXpAaWdhbGlhLmNvbT4KKwogICAgICAgICBbR1RLXSBVc2UgR1F1YXJrJ3MgaW4gdGhlIEFUSyB3
cmFwcGVyIHRvIGdldCBhbmQgc2V0IGFyYml0cmFyeSBkYXRhCiAgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjM5NAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlckF0ay5jcHAKaW5kZXggZmY0MGRmZi4uYzFlNzU3MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyQXRrLmNwcApAQCAtMjk1LDYgKzI5NSwxMiBAQCBzdGF0aWMgQXRrT2JqZWN0
KiBhdGtQYXJlbnRPZlJvb3RPYmplY3QoQXRrT2JqZWN0KiBvYmplY3QpCiAKIHN0YXRpYyBBdGtP
YmplY3QqIHdlYmtpdF9hY2Nlc3NpYmxlX2dldF9wYXJlbnQoQXRrT2JqZWN0KiBvYmplY3QpCiB7
CisgICAgLy8gQ2hlY2sgZmlyc3QgaWYgdGhlIHBhcmVudCBoYXMgYmVlbiBhbHJlYWR5IHNldC4K
KyAgICBBdGtPYmplY3QqIGFjY2Vzc2libGVQYXJlbnQgPSBBVEtfT0JKRUNUX0NMQVNTKHdlYmtp
dF9hY2Nlc3NpYmxlX3BhcmVudF9jbGFzcyktPmdldF9wYXJlbnQob2JqZWN0KTsKKyAgICBpZiAo
YWNjZXNzaWJsZVBhcmVudCkKKyAgICAgICAgcmV0dXJuIGFjY2Vzc2libGVQYXJlbnQ7CisKKyAg
ICAvLyBQYXJlbnQgbm90IHNldCB5ZXQsIHNvIHRyeSB0byBmaW5kIGl0IGluIHRoZSBoaWVyYXJj
aHkuCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCA9IGNvcmUob2JqZWN0KTsK
ICAgICBpZiAoIWNvcmVPYmplY3QpCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmlu
ZGV4IDIwNWU4OWQuLmUwYjllYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxOCBAQAog
MjAxMS0xMS0xNiAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+CiAK
KyAgICAgICAgW0dUS10gQ29uc2lkZXIgcGFyZW50IEF0a09iamVjdCBpbiB3ZWJraXRfYWNjZXNz
aWJsZV9nZXRfcGFyZW50KCksIGlmIGFscmVhZHkgc2V0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjUyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvdGVzdGF0ay5jOgorICAgICAgICAodGVz
dFdlYmtpdEF0a1NldFBhcmVudEZvck9iamVjdCk6IE5ldyB1bml0IHRlc3QgdG8gY2hlY2sgdGhh
dAorICAgICAgICBjYWxscyB0byBhdGtfb2JqZWN0X2dldF9wYXJlbnQoKSBvdmVyIGEgV2ViS2l0
R1RLJ3MgYWNjZXNzaWJpbGl0eQorICAgICAgICB3cmFwcGVyIG9iamVjdCByZXR1cm5zIGl0cyBw
YXJlbnQgQXRrT2JqZWN0IGlmIHByZXZpb3VzbHkgc2V0LgorICAgICAgICAobWFpbik6IEFkZGVk
IG5ldyB0ZXN0LgorCisyMDExLTExLTE2ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpA
aWdhbGlhLmNvbT4KKwogICAgICAgICBbR1RLXSBEbyBub3QgaGlkZSBhY2Nlc3NpYmlsaXR5IHJv
b3Qgb2JqZWN0IGZyb20gQVQncwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzIzOTAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvdGVzdHMv
dGVzdGF0ay5jIGIvU291cmNlL1dlYktpdC9ndGsvdGVzdHMvdGVzdGF0ay5jCmluZGV4IDUxZDhk
N2EuLjhhODkyODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3Rlc3RzL3Rlc3RhdGsu
YworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay90ZXN0cy90ZXN0YXRrLmMKQEAgLTE2NDIsNiArMTY0
Miw0NCBAQCBzdGF0aWMgdm9pZCB0ZXN0V2Via2l0QXRrUGFyZW50Rm9yUm9vdE9iamVjdCgpCiAg
ICAgZ19vYmplY3RfdW5yZWYoYm94KTsKIH0KIAorc3RhdGljIHZvaWQgdGVzdFdlYmtpdEF0a1Nl
dFBhcmVudEZvck9iamVjdCgpCit7CisgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJ
VF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOworICAgIEd0a0FsbG9jYXRpb24gYWxs
b2NhdGlvbiA9IHsgMCwgMCwgODAwLCA2MDAgfTsKKyAgICBndGtfd2lkZ2V0X3NpemVfYWxsb2Nh
dGUoR1RLX1dJREdFVCh3ZWJWaWV3KSwgJmFsbG9jYXRpb24pOworICAgIHdlYmtpdF93ZWJfdmll
d19sb2FkX3N0cmluZyh3ZWJWaWV3LCBjb250ZW50cywgMCwgMCwgMCk7CisKKyAgICAvKiBQdXQg
dGhlIHdlYnZpZXcgaW4gYSB3aW5kb3cgdG8gY2hlY2sgdGhlIG5vcm1hbCBiZWhhdmlvdXIga2Vl
cHMKKyAgICAgICB3b3JraW5nIGFzIGV4cGVjdGVkIHdoZW4gdGhlIHdlYnZpZXcgaXMgaW5zaWRl
IGEgY29udGFpbmVyLiAqLworICAgIEd0a1dpZGdldCogd2luZG93ID0gZ3RrX3dpbmRvd19uZXco
R1RLX1dJTkRPV19UT1BMRVZFTCk7CisgICAgZ19vYmplY3RfcmVmX3Npbmsod2luZG93KTsKKyAg
ICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHdpbmRvdyksIHdlYlZpZXcpOworCisg
ICAgQXRrT2JqZWN0KiBheFJvb3QgPSBndGtfd2lkZ2V0X2dldF9hY2Nlc3NpYmxlKEdUS19XSURH
RVQod2ViVmlldykpOworICAgIGdfYXNzZXJ0KEFUS19JU19PQkpFQ1QoYXhSb290KSk7CisKKyAg
ICBBdGtPYmplY3QqIGF4V2luZG93ID0gZ3RrX3dpZGdldF9nZXRfYWNjZXNzaWJsZSh3aW5kb3cp
OworICAgIGdfYXNzZXJ0KEFUS19JU19PQkpFQ1QoYXhXaW5kb3cpKTsKKworICAgIC8qIFRoZSBw
YXJlbnQgb2YgdGhlIHJvb3Qgb2JqZWN0IGlzIHRoZSB3aW5kb3cncyBhMTF5IG9iamVjdC4gKi8K
KyAgICBnX2Fzc2VydChhdGtfb2JqZWN0X2dldF9wYXJlbnQoYXhSb290KSA9PSBheFdpbmRvdyk7
CisKKyAgICAvKiBXZSBub3cgbmVlZCB0byB1c2Ugc29tZXRoaW5nIGFzIGEgYW4gYWx0ZXJuYXRp
dmUgcGFyZW50IGZvcgorICAgICAgIHRoZSBhMTF5IG9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhl
IHJvb3Qgb2YgdGhlIERPTSB0cmVlLiAqLworICAgIEd0a1dpZGdldCogYnV0dG9uID0gZ3RrX2J1
dHRvbl9uZXcoKTsKKyAgICBnX29iamVjdF9yZWZfc2luayhidXR0b24pOworCisgICAgQXRrT2Jq
ZWN0KiBheEJ1dHRvbiA9IGd0a193aWRnZXRfZ2V0X2FjY2Vzc2libGUgKGJ1dHRvbik7CisgICAg
Z19hc3NlcnQoQVRLX0lTX09CSkVDVChheEJ1dHRvbikpOworCisgICAgLyogTWFudWFsbHkgc2V0
IHRoZSBidXR0b24ncyBhMTF5IG9iamVjdCBhcyB0aGUgcGFyZW50IGFuZCBjaGVjay4gKi8KKyAg
ICBhdGtfb2JqZWN0X3NldF9wYXJlbnQoYXhSb290LCBheEJ1dHRvbik7CisgICAgZ19hc3NlcnQo
YXRrX29iamVjdF9nZXRfcGFyZW50KGF4Um9vdCkgPT0gYXhCdXR0b24pOworCisgICAgZ19vYmpl
Y3RfdW5yZWYoYnV0dG9uKTsKKyAgICBnX29iamVjdF91bnJlZih3aW5kb3cpOworfQorCiBpbnQg
bWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiB7CiAgICAgZ3RrX3Rlc3RfaW5pdCgmYXJnYywg
JmFyZ3YsIDApOwpAQCAtMTY3MCw2ICsxNzA4LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIq
KiBhcmd2KQogICAgIGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdC9hdGsvbGlzdHNPZkl0ZW1zIiwg
dGVzdFdlYmtpdEF0a0xpc3RzT2ZJdGVtcyk7CiAgICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0
L2F0ay90ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbnMiLCB0ZXN0V2Via2l0QXRrVGV4dENoYW5nZWRO
b3RpZmljYXRpb25zKTsKICAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQvYXRrL3BhcmVudEZv
clJvb3RPYmplY3QiLCB0ZXN0V2Via2l0QXRrUGFyZW50Rm9yUm9vdE9iamVjdCk7CisgICAgZ190
ZXN0X2FkZF9mdW5jKCIvd2Via2l0L2F0ay9zZXRQYXJlbnRGb3JPYmplY3QiLCB0ZXN0V2Via2l0
QXRrU2V0UGFyZW50Rm9yT2JqZWN0KTsKICAgICByZXR1cm4gZ190ZXN0X3J1biAoKTsKIH0KIAot
LSAKMS43LjcuMQoK
</data>
<flag name="review"
          id="114485"
          type_id="1"
          status="+"
          setter="xan.lopez"
    />
          </attachment>
      

    </bug>

</bugzilla>