static void HTMLXMLHttpRequest_bind_event(DispatchEx *dispex, int eid) { HTMLXMLHttpRequest *This = impl_from_DispatchEx(dispex); nsIDOMEventTarget *nstarget; nsAString type_str; nsresult nsres; static const WCHAR readystatechangeW[] = {'r','e','a','d','y','s','t','a','t','e','c','h','a','n','g','e',0}; TRACE("(%p)\n", This); assert(eid == EVENTID_READYSTATECHANGE); if(This->event_listener) return; This->event_listener = heap_alloc(sizeof(*This->event_listener)); if(!This->event_listener) return; This->event_listener->nsIDOMEventListener_iface.lpVtbl = &XMLHttpReqEventListenerVtbl; This->event_listener->ref = 1; This->event_listener->xhr = This; nsres = nsIXMLHttpRequest_QueryInterface(This->nsxhr, &IID_nsIDOMEventTarget, (void**)&nstarget); assert(nsres == NS_OK); nsAString_InitDepend(&type_str, readystatechangeW); nsres = nsIDOMEventTarget_AddEventListener(nstarget, &type_str, &This->event_listener->nsIDOMEventListener_iface, FALSE, TRUE, 2); nsAString_Finish(&type_str); nsIDOMEventTarget_Release(nstarget); if(NS_FAILED(nsres)) ERR("AddEventListener failed: %08x\n", nsres); }
static void init_event(nsIDOMEventTarget *target, const PRUnichar *type, nsIDOMEventListener *listener, BOOL capture) { nsAString type_str; nsresult nsres; nsAString_InitDepend(&type_str, type); nsres = nsIDOMEventTarget_AddEventListener(target, &type_str, listener, capture, FALSE, 1); nsAString_Finish(&type_str); if(NS_FAILED(nsres)) ERR("AddEventTarget failed: %08x\n", nsres); }