<?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>4247</bug_id>
          
          <creation_ts>2005-07-31 22:34:31 -0700</creation_ts>
          <short_desc>addEventListener in Obj-C does not work</short_desc>
          <delta_ts>2006-05-30 15:23:31 -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>DOM</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://lists.apple.com/archives/Webkitsdk-dev/2005/May/msg00050.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Critical</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adriaan Tijsseling">adriaan</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>15609</commentid>
    <comment_count>0</comment_count>
    <who name="Adriaan Tijsseling">adriaan</who>
    <bug_when>2005-07-31 22:34:31 -0700</bug_when>
    <thetext>See the thread here:
http://lists.apple.com/archives/Webkitsdk-dev/2005/May/msg00050.html
In short, adding event listeners via Obj-C has no effect. WebKit doesn&apos;t call handleEvent on the target 
(which conforms to the EventListener protocol).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>15610</commentid>
    <comment_count>1</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-07-31 22:35:58 -0700</bug_when>
    <thetext>Uh oh. I see why:

- (void)addEventListener:(NSString *)type :(id &lt;DOMEventListener&gt;)listener :(BOOL)useCapture
{
    ERROR(&quot;unimplemented&quot;);
}

- (void)removeEventListener:(NSString *)type :(id &lt;DOMEventListener&gt;)listener :(BOOL)useCapture
{
    ERROR(&quot;unimplemented&quot;);
}
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>15614</commentid>
    <comment_count>2</comment_count>
      <attachid>3190</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-07-31 23:38:42 -0700</bug_when>
    <thetext>Created attachment 3190
patch to implement this</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>19357</commentid>
    <comment_count>3</comment_count>
      <attachid>3190</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-09-11 11:01:50 -0700</bug_when>
    <thetext>Comment on attachment 3190
patch to implement this

Anders said he tried this out and it worked.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>19807</commentid>
    <comment_count>4</comment_count>
      <attachid>3190</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-09-17 14:33:28 -0700</bug_when>
    <thetext>Comment on attachment 3190
patch to implement this

Looks fine.  Two comments:

1.  I don&apos;t understand the ListenerMap map = listenerMap; dance that you do in
two places.  You had made some comment before about locals being faster to
access... but particularly in the ObjCEventListener::find case it seems
superfluous.

2.  Although I personally agree with the style of returning objects
ref-counted... ObjCEventListener::create differs from the rest of the C++ code
in WebCore by doing so.  I think that wrapper should be returned floating and
stuck into a SharedPtr if necessary, or simply returned as a
SharedPtr&lt;ObjCEventListener&gt; for consistancy.

I&apos;ll leave those corrections to your discression.  r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>19967</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-09-18 14:44:44 -0700</bug_when>
    <thetext>As ggaren correctly points out, all of these really should have layout tests.  For better or worse I ignored 
that fact, realizing that we don&apos;t currently (AFAIK) have any way of testing the Obj-C DOM API.  I talked 
with andersca a bit on IRC, he said he started the py-objc Obj-C DOM testing system, but hasn&apos;t finished 
yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>20069</commentid>
    <comment_count>6</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2005-09-20 00:51:51 -0700</bug_when>
    <thetext>OK, since we don&apos;t have a way to test the bindings yet, I&apos;m landing this without a test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>44058</commentid>
    <comment_count>7</comment_count>
    <who name="Alice Liu">alice.barraclough</who>
    <bug_when>2006-05-30 15:23:31 -0700</bug_when>
    <thetext>&lt;rdar://problem/4562444&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>3190</attachid>
            <date>2005-07-31 23:38:42 -0700</date>
            <delta_ts>2005-09-17 14:33:28 -0700</delta_ts>
            <desc>patch to implement this</desc>
            <filename>AddEventListenerPatch.txt</filename>
            <type>text/plain</type>
            <size>3471</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IGt3cS9ET00ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUv
a3dxL0RPTS5tbSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zOQpkaWZmIC1wIC11IC11IC1wIC1y
MS4zOSBrd3EvRE9NLm1tCi0tLSBrd3EvRE9NLm1tCTMwIEp1bCAyMDA1IDAyOjMzOjA5IC0wMDAw
CTEuMzkKKysrIGt3cS9ET00ubW0JMSBBdWcgMjAwNSAwNjoyMDowMCAtMDAwMApAQCAtMzAsNiAr
MzAsNyBAQAogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5o
PgogCiAjaW1wb3J0ICJjc3NoZWxwZXIuaCIKKyNpbXBvcnQgImRvbTJfZXZlbnRzLmgiCiAjaW1w
b3J0ICJkb20yX3JhbmdlLmgiCiAjaW1wb3J0ICJkb20yX3JhbmdlaW1wbC5oIgogI2ltcG9ydCAi
ZG9tMl90cmF2ZXJzYWwuaCIKQEAgLTQ0LDYgKzQ1LDcgQEAKICNpbXBvcnQgImRvbV90ZXh0aW1w
bC5oIgogI2ltcG9ydCAiZG9tX3htbGltcGwuaCIKICNpbXBvcnQgImh0bWxfZWxlbWVudGltcGwu
aCIKKyNpbXBvcnQgImhhc2htYXAuaCIKIAogI2ltcG9ydCAia2h0bWxfcGFydC5oIgogCkBAIC02
OSw2ICs3MSw4IEBAIHVzaW5nIERPTTo6RE9NU3RyaW5nOwogdXNpbmcgRE9NOjpET01TdHJpbmdJ
bXBsOwogdXNpbmcgRE9NOjpFbGVtZW50SW1wbDsKIHVzaW5nIERPTTo6RW50aXR5SW1wbDsKK3Vz
aW5nIERPTTo6RXZlbnRJbXBsOwordXNpbmcgRE9NOjpFdmVudExpc3RlbmVyOwogdXNpbmcgRE9N
OjpGaWx0ZXJOb2RlOwogdXNpbmcgRE9NOjpIVE1MRWxlbWVudEltcGw7CiB1c2luZyBuYW1lc3Bh
Y2UgSFRNTE5hbWVzOwpAQCAtODgsNiArOTIsOCBAQCB1c2luZyBET006OlJhbmdlSW1wbDsKIHVz
aW5nIERPTTo6VGV4dEltcGw7CiB1c2luZyBET006OlRyZWVXYWxrZXJJbXBsOwogCit1c2luZyBr
aHRtbDo6SGFzaE1hcDsKK3VzaW5nIGtodG1sOjpQb2ludGVySGFzaDsKIHVzaW5nIGtodG1sOjpS
ZW5kZXJPYmplY3Q7CiB1c2luZyBraHRtbDo6U2hhcmVkUHRyOwogCkBAIC0xMDksNiArMTE1LDI0
IEBAIHVzaW5nIGtodG1sOjpTaGFyZWRQdHI7CiArIChET01OYW1lZE5vZGVNYXAgKilfbmFtZWRO
b2RlTWFwV2l0aEltcGw6KE5hbWVkTm9kZU1hcEltcGwgKilpbXBsOwogQGVuZAogCitjbGFzcyBP
YmpDRXZlbnRMaXN0ZW5lciA6IHB1YmxpYyBFdmVudExpc3RlbmVyIHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgT2JqQ0V2ZW50TGlzdGVuZXIgKmZpbmQoaWQgPERPTUV2ZW50TGlzdGVuZXI+KTsKKyAg
ICBzdGF0aWMgT2JqQ0V2ZW50TGlzdGVuZXIgKmNyZWF0ZShpZCA8RE9NRXZlbnRMaXN0ZW5lcj4p
OworCitwcml2YXRlOgorICAgIE9iakNFdmVudExpc3RlbmVyKGlkIDxET01FdmVudExpc3RlbmVy
Pik7CisgICAgdmlydHVhbCB+T2JqQ0V2ZW50TGlzdGVuZXIoKTsKKworICAgIHZpcnR1YWwgdm9p
ZCBoYW5kbGVFdmVudChFdmVudEltcGwgKiwgYm9vbCBpc1dpbmRvd0V2ZW50KTsKKworICAgIGlk
IDxET01FdmVudExpc3RlbmVyPiBtX2xpc3RlbmVyOworfTsKKwordHlwZWRlZiBIYXNoTWFwPCBp
ZCwgT2JqQ0V2ZW50TGlzdGVuZXIgKiwgUG9pbnRlckhhc2g8aWQ+ID4gTGlzdGVuZXJNYXA7CisK
K3N0YXRpYyBMaXN0ZW5lck1hcCAqbGlzdGVuZXJNYXA7CisKIC8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAvLyBET01PYmplY3QKIApAQCAtMzU1LDEyICszNzksMTUgQEAgdXNp
bmcga2h0bWw6OlNoYXJlZFB0cjsKIAogLSAodm9pZClhZGRFdmVudExpc3RlbmVyOihOU1N0cmlu
ZyAqKXR5cGUgOihpZCA8RE9NRXZlbnRMaXN0ZW5lcj4pbGlzdGVuZXIgOihCT09MKXVzZUNhcHR1
cmUKIHsKLSAgICBFUlJPUigidW5pbXBsZW1lbnRlZCIpOworICAgIEV2ZW50TGlzdGVuZXIgKndy
YXBwZXIgPSBPYmpDRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGxpc3RlbmVyKTsKKyAgICBbc2VsZiBf
bm9kZUltcGxdLT5hZGRFdmVudExpc3RlbmVyKHR5cGUsIHdyYXBwZXIsIHVzZUNhcHR1cmUpOwor
ICAgIHdyYXBwZXItPmRlcmVmKCk7CiB9CiAKIC0gKHZvaWQpcmVtb3ZlRXZlbnRMaXN0ZW5lcjoo
TlNTdHJpbmcgKil0eXBlIDooaWQgPERPTUV2ZW50TGlzdGVuZXI+KWxpc3RlbmVyIDooQk9PTCl1
c2VDYXB0dXJlCiB7Ci0gICAgRVJST1IoInVuaW1wbGVtZW50ZWQiKTsKKyAgICBpZiAoRXZlbnRM
aXN0ZW5lciAqd3JhcHBlciA9IE9iakNFdmVudExpc3RlbmVyOjpmaW5kKGxpc3RlbmVyKSkKKyAg
ICAgICAgW3NlbGYgX25vZGVJbXBsXS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCB3cmFwcGVy
LCB1c2VDYXB0dXJlKTsKIH0KIAogLSAoQk9PTClkaXNwYXRjaEV2ZW50OihET01FdmVudCAqKWV2
ZW50CkBAIC0yMjA1LDMgKzIyMzIsNDAgQEAgc2hvcnQgT2JqQ05vZGVGaWx0ZXJDb25kaXRpb246
OmFjY2VwdE5vZAogCiBAZW5kCiAKK09iakNFdmVudExpc3RlbmVyICpPYmpDRXZlbnRMaXN0ZW5l
cjo6ZmluZChpZCA8RE9NRXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIpCit7CisgICAgaWYgKExpc3Rl
bmVyTWFwICptYXAgPSBsaXN0ZW5lck1hcCkKKyAgICAgICAgcmV0dXJuIG1hcC0+Z2V0KGxpc3Rl
bmVyKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworT2JqQ0V2ZW50TGlzdGVuZXIgKk9iakNFdmVu
dExpc3RlbmVyOjpjcmVhdGUoaWQgPERPTUV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyKQoreworICAg
IE9iakNFdmVudExpc3RlbmVyICp3cmFwcGVyID0gZmluZChsaXN0ZW5lcik7CisgICAgaWYgKCF3
cmFwcGVyKQorICAgICAgICB3cmFwcGVyID0gbmV3IE9iakNFdmVudExpc3RlbmVyKGxpc3RlbmVy
KTsKKyAgICB3cmFwcGVyLT5yZWYoKTsKKyAgICByZXR1cm4gd3JhcHBlcjsKK30KKworT2JqQ0V2
ZW50TGlzdGVuZXI6Ok9iakNFdmVudExpc3RlbmVyKGlkIDxET01FdmVudExpc3RlbmVyPiBsaXN0
ZW5lcikKKyAgICA6IG1fbGlzdGVuZXIoW2xpc3RlbmVyIHJldGFpbl0pCit7CisgICAgTGlzdGVu
ZXJNYXAgKm1hcCA9IGxpc3RlbmVyTWFwOworICAgIGlmICghbWFwKSB7CisgICAgICAgIG1hcCA9
IG5ldyBMaXN0ZW5lck1hcDsKKyAgICAgICAgbGlzdGVuZXJNYXAgPSBtYXA7CisgICAgfQorICAg
IG1hcC0+aW5zZXJ0KGxpc3RlbmVyLCB0aGlzKTsKK30KKworT2JqQ0V2ZW50TGlzdGVuZXI6On5P
YmpDRXZlbnRMaXN0ZW5lcigpCit7CisgICAgbGlzdGVuZXJNYXAtPnJlbW92ZShtX2xpc3RlbmVy
KTsKKyAgICBbbV9saXN0ZW5lciByZWxlYXNlXTsKK30KKwordm9pZCBPYmpDRXZlbnRMaXN0ZW5l
cjo6aGFuZGxlRXZlbnQoRXZlbnRJbXBsICpldmVudCwgYm9vbCkKK3sKKyAgICBbbV9saXN0ZW5l
ciBoYW5kbGVFdmVudDpbRE9NRXZlbnQgX2V2ZW50V2l0aEltcGw6ZXZlbnRdXTsKK30K
</data>
<flag name="review"
          id="563"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>