mirror of
https://github.com/reactos/reactos.git
synced 2024-06-28 00:41:36 +00:00
[MSHTML] Sync with Wine Staging 1.7.55. [APPWIZ][BOOTDATA] Update gecko package to 2.40. CORE-10536
svn path=/trunk/; revision=70191
This commit is contained in:
parent
50d5b7acea
commit
3d0a8a174a
|
@ -104,6 +104,6 @@ Signature = "$ReactOS$"
|
|||
"modules/optional/vmx_mode.dll" 1 optional
|
||||
"modules/optional/vmx_svga.inf" 6 optional
|
||||
"modules/optional/vmx_svga.sys" 2 optional
|
||||
"modules/optional/wine_gecko-2.34-x86.msi" 4 optional
|
||||
"modules/optional/wine_gecko-2.40-x86.msi" 4 optional
|
||||
"boot/bootdata/bootcdregtest/AHKAppTests.cmd" 7 optional
|
||||
; DON'T REMOVE THE FOLLOWING NEW LINE ! THIS MEANS YOU !
|
||||
|
|
|
@ -26,11 +26,11 @@
|
|||
|
||||
#include <msi.h>
|
||||
|
||||
#define GECKO_VERSION "2.34"
|
||||
#define GECKO_VERSION "2.40"
|
||||
|
||||
#ifdef __i386__
|
||||
#define ARCH_STRING "x86"
|
||||
#define GECKO_SHA "330100fecc9c12e98760fd5abfbf3e3d0cccf052"
|
||||
#define GECKO_SHA "8a3adedf3707973d1ed4ac3b2e791486abf814bd"
|
||||
#else
|
||||
#define ARCH_STRING ""
|
||||
#define GECKO_SHA "???"
|
||||
|
@ -60,7 +60,7 @@ static const addon_info_t *addon;
|
|||
|
||||
static HWND install_dialog = NULL;
|
||||
|
||||
static WCHAR GeckoUrl[] = L"http://svn.reactos.org/amine/wine_gecko-2.34-x86.msi";
|
||||
static WCHAR GeckoUrl[] = L"https://svn.reactos.org/amine/wine_gecko-2.40-x86.msi";
|
||||
|
||||
/* SHA definitions are copied from advapi32. They aren't available in headers. */
|
||||
|
||||
|
|
|
@ -16,6 +16,7 @@ list(APPEND SOURCE
|
|||
editor.c
|
||||
hlink.c
|
||||
htmlanchor.c
|
||||
htmlarea.c
|
||||
htmlattr.c
|
||||
htmlbody.c
|
||||
htmlcomment.c
|
||||
|
@ -81,6 +82,7 @@ list(APPEND SOURCE
|
|||
task.c
|
||||
txtrange.c
|
||||
view.c
|
||||
xmlhttprequest.c
|
||||
mshtml_private.h)
|
||||
|
||||
if(MSVC)
|
||||
|
|
|
@ -53,6 +53,7 @@ typedef struct {
|
|||
char *content_type;
|
||||
char *charset;
|
||||
UINT32 response_status;
|
||||
char *response_status_text;
|
||||
REQUEST_METHOD request_method;
|
||||
struct list response_headers;
|
||||
struct list request_headers;
|
||||
|
|
|
@ -43,7 +43,6 @@
|
|||
#define NSCMD_OL "cmd_ol"
|
||||
#define NSCMD_OUTDENT "cmd_outdent"
|
||||
#define NSCMD_PASTE "cmd_paste"
|
||||
#define NSCMD_SELECTALL "cmd_selectAll"
|
||||
#define NSCMD_SELECTBEGINLINE "cmd_selectBeginLine"
|
||||
#define NSCMD_SELECTBOTTOM "cmd_selectBottom"
|
||||
#define NSCMD_SELECTCHARNEXT "cmd_selectCharNext"
|
||||
|
@ -634,20 +633,6 @@ static HRESULT exec_font(HTMLDocument *This, DWORD cmdexecopt, VARIANT *in, VARI
|
|||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT exec_selectall(HTMLDocument *This, DWORD cmdexecopt, VARIANT *in, VARIANT *out)
|
||||
{
|
||||
TRACE("(%p)\n", This);
|
||||
|
||||
if(in || out)
|
||||
FIXME("unsupported args\n");
|
||||
|
||||
if(This->doc_obj->nscontainer)
|
||||
do_ns_command(This, NSCMD_SELECTALL, NULL);
|
||||
|
||||
update_doc(This, UPDATE_UI);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT exec_bold(HTMLDocument *This, DWORD cmdexecopt, VARIANT *in, VARIANT *out)
|
||||
{
|
||||
TRACE("(%p)\n", This);
|
||||
|
@ -1191,19 +1176,10 @@ static HRESULT exec_hyperlink(HTMLDocument *This, DWORD cmdexecopt, VARIANT *in,
|
|||
return hres;
|
||||
}
|
||||
|
||||
static HRESULT query_selall_status(HTMLDocument *This, OLECMD *cmd)
|
||||
{
|
||||
TRACE("(%p)->(%p)\n", This, cmd);
|
||||
|
||||
cmd->cmdf = OLECMDF_SUPPORTED|OLECMDF_ENABLED;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
const cmdtable_t editmode_cmds[] = {
|
||||
{IDM_DELETE, query_edit_status, exec_delete},
|
||||
{IDM_FONTNAME, query_edit_status, exec_fontname},
|
||||
{IDM_FONTSIZE, query_edit_status, exec_fontsize},
|
||||
{IDM_SELECTALL, query_selall_status , exec_selectall},
|
||||
{IDM_FORECOLOR, query_edit_status, exec_forecolor},
|
||||
{IDM_BOLD, query_edit_status, exec_bold},
|
||||
{IDM_ITALIC, query_edit_status, exec_italic},
|
||||
|
|
|
@ -31,4 +31,7 @@ DEFINE_GUID(IID_IDispatchJS,0x719c3050,0xf9d3,0x11cf,0xa4,0x93,0x00,0x40,0x05,0x
|
|||
/* htmlnode.c */
|
||||
DEFINE_GUID(IID_nsXPCOMCycleCollectionParticipant, 0x9674489b,0x1f6f,0x4550,0xa7,0x30, 0xcc,0xae,0xdd,0x10,0x4c,0xf9);
|
||||
|
||||
DEFINE_GUID(IID_HTMLPluginContainer, 0xbd7a6050,0xb373,0x4f6f,0xa4,0x93,0xdd,0x40,0xc5,0x23,0xa8,0x6a);
|
||||
DEFINE_GUID(SID_SHTMLEditServices, 0x3050f7f9,0x98b5,0x11cf,0xbb,0x82,0x00,0xaa,0x00,0xbd,0xce,0x0b);
|
||||
|
||||
/* NO CODE HERE, THIS IS JUST REQUIRED FOR THE GUID DEFINITIONS */
|
||||
|
|
|
@ -26,29 +26,18 @@ typedef struct {
|
|||
nsIDOMHTMLAnchorElement *nsanchor;
|
||||
} HTMLAnchorElement;
|
||||
|
||||
static HRESULT navigate_anchor_window(HTMLAnchorElement *This, const WCHAR *target)
|
||||
static HRESULT navigate_href_new_window(HTMLElement *element, nsAString *href_str, const WCHAR *target)
|
||||
{
|
||||
nsAString href_str;
|
||||
const PRUnichar *href;
|
||||
IUri *uri;
|
||||
nsresult nsres;
|
||||
HRESULT hres;
|
||||
|
||||
nsAString_Init(&href_str, NULL);
|
||||
nsres = nsIDOMHTMLAnchorElement_GetHref(This->nsanchor, &href_str);
|
||||
if(NS_SUCCEEDED(nsres)) {
|
||||
const PRUnichar *href;
|
||||
|
||||
nsAString_GetData(&href_str, &href);
|
||||
hres = create_relative_uri(This->element.node.doc->basedoc.window, href, &uri);
|
||||
}else {
|
||||
ERR("Could not get anchor href: %08x\n", nsres);
|
||||
hres = E_FAIL;
|
||||
}
|
||||
nsAString_Finish(&href_str);
|
||||
nsAString_GetData(href_str, &href);
|
||||
hres = create_relative_uri(element->node.doc->basedoc.window, href, &uri);
|
||||
if(FAILED(hres))
|
||||
return hres;
|
||||
|
||||
hres = navigate_new_window(This->element.node.doc->basedoc.window, uri, target, NULL, NULL);
|
||||
hres = navigate_new_window(element->node.doc->basedoc.window, uri, target, NULL, NULL);
|
||||
IUri_Release(uri);
|
||||
return hres;
|
||||
}
|
||||
|
@ -102,52 +91,72 @@ HTMLOuterWindow *get_target_window(HTMLOuterWindow *window, nsAString *target_st
|
|||
return ret_window;
|
||||
}
|
||||
|
||||
static HRESULT navigate_anchor(HTMLAnchorElement *This)
|
||||
static HRESULT navigate_href(HTMLElement *element, nsAString *href_str, nsAString *target_str)
|
||||
{
|
||||
nsAString href_str, target_str;
|
||||
HTMLOuterWindow *window;
|
||||
BOOL use_new_window;
|
||||
nsresult nsres;
|
||||
HRESULT hres = E_FAIL;
|
||||
const PRUnichar *href;
|
||||
HRESULT hres;
|
||||
|
||||
|
||||
nsAString_Init(&target_str, NULL);
|
||||
nsres = nsIDOMHTMLAnchorElement_GetTarget(This->nsanchor, &target_str);
|
||||
if(NS_FAILED(nsres))
|
||||
return E_FAIL;
|
||||
|
||||
window = get_target_window(This->element.node.doc->basedoc.window, &target_str, &use_new_window);
|
||||
if(!window && use_new_window) {
|
||||
const PRUnichar *target;
|
||||
|
||||
nsAString_GetData(&target_str, &target);
|
||||
hres = navigate_anchor_window(This, target);
|
||||
nsAString_Finish(&target_str);
|
||||
return hres;
|
||||
}
|
||||
|
||||
nsAString_Finish(&target_str);
|
||||
if(!window)
|
||||
return S_OK;
|
||||
|
||||
nsAString_Init(&href_str, NULL);
|
||||
nsres = nsIDOMHTMLAnchorElement_GetHref(This->nsanchor, &href_str);
|
||||
if(NS_SUCCEEDED(nsres)) {
|
||||
const PRUnichar *href;
|
||||
|
||||
nsAString_GetData(&href_str, &href);
|
||||
if(*href) {
|
||||
hres = navigate_url(window, href, window->uri_nofrag, BINDING_NAVIGATED);
|
||||
window = get_target_window(element->node.doc->basedoc.window, target_str, &use_new_window);
|
||||
if(!window) {
|
||||
if(use_new_window) {
|
||||
const PRUnichar *target;
|
||||
nsAString_GetData(target_str, &target);
|
||||
return navigate_href_new_window(element, href_str, target);
|
||||
}else {
|
||||
TRACE("empty href\n");
|
||||
hres = S_OK;
|
||||
return S_OK;
|
||||
}
|
||||
}
|
||||
nsAString_Finish(&href_str);
|
||||
|
||||
nsAString_GetData(href_str, &href);
|
||||
if(*href) {
|
||||
hres = navigate_url(window, href, window->uri_nofrag, BINDING_NAVIGATED);
|
||||
}else {
|
||||
TRACE("empty href\n");
|
||||
hres = S_OK;
|
||||
}
|
||||
IHTMLWindow2_Release(&window->base.IHTMLWindow2_iface);
|
||||
return hres;
|
||||
}
|
||||
|
||||
HRESULT handle_link_click_event(HTMLElement *element, nsAString *href_str, nsAString *target_str,
|
||||
nsIDOMEvent *event, BOOL *prevent_default)
|
||||
{
|
||||
nsIDOMMouseEvent *mouse_event;
|
||||
INT16 button;
|
||||
nsresult nsres;
|
||||
HRESULT hres;
|
||||
|
||||
TRACE("CLICK\n");
|
||||
|
||||
nsres = nsIDOMEvent_QueryInterface(event, &IID_nsIDOMMouseEvent, (void**)&mouse_event);
|
||||
assert(nsres == NS_OK);
|
||||
|
||||
nsres = nsIDOMMouseEvent_GetButton(mouse_event, &button);
|
||||
assert(nsres == NS_OK);
|
||||
|
||||
nsIDOMMouseEvent_Release(mouse_event);
|
||||
|
||||
switch(button) {
|
||||
case 0:
|
||||
*prevent_default = TRUE;
|
||||
hres = navigate_href(element, href_str, target_str);
|
||||
break;
|
||||
case 1:
|
||||
*prevent_default = TRUE;
|
||||
hres = navigate_href_new_window(element, href_str, NULL);
|
||||
break;
|
||||
default:
|
||||
*prevent_default = FALSE;
|
||||
hres = S_OK;
|
||||
}
|
||||
|
||||
nsAString_Finish(href_str);
|
||||
nsAString_Finish(target_str);
|
||||
return hres;
|
||||
}
|
||||
|
||||
static inline HTMLAnchorElement *impl_from_IHTMLAnchorElement(IHTMLAnchorElement *iface)
|
||||
{
|
||||
return CONTAINING_RECORD(iface, HTMLAnchorElement, IHTMLAnchorElement_iface);
|
||||
|
@ -178,14 +187,14 @@ static ULONG WINAPI HTMLAnchorElement_Release(IHTMLAnchorElement *iface)
|
|||
static HRESULT WINAPI HTMLAnchorElement_GetTypeInfoCount(IHTMLAnchorElement *iface, UINT *pctinfo)
|
||||
{
|
||||
HTMLAnchorElement *This = impl_from_IHTMLAnchorElement(iface);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.dispex.IDispatchEx_iface, pctinfo);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.event_target.dispex.IDispatchEx_iface, pctinfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLAnchorElement_GetTypeInfo(IHTMLAnchorElement *iface, UINT iTInfo,
|
||||
LCID lcid, ITypeInfo **ppTInfo)
|
||||
{
|
||||
HTMLAnchorElement *This = impl_from_IHTMLAnchorElement(iface);
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.dispex.IDispatchEx_iface, iTInfo, lcid,
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.event_target.dispex.IDispatchEx_iface, iTInfo, lcid,
|
||||
ppTInfo);
|
||||
}
|
||||
|
||||
|
@ -194,7 +203,7 @@ static HRESULT WINAPI HTMLAnchorElement_GetIDsOfNames(IHTMLAnchorElement *iface,
|
|||
LCID lcid, DISPID *rgDispId)
|
||||
{
|
||||
HTMLAnchorElement *This = impl_from_IHTMLAnchorElement(iface);
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.event_target.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
cNames, lcid, rgDispId);
|
||||
}
|
||||
|
||||
|
@ -203,7 +212,7 @@ static HRESULT WINAPI HTMLAnchorElement_Invoke(IHTMLAnchorElement *iface, DISPID
|
|||
VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
|
||||
{
|
||||
HTMLAnchorElement *This = impl_from_IHTMLAnchorElement(iface);
|
||||
return IDispatchEx_Invoke(&This->element.node.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
return IDispatchEx_Invoke(&This->element.node.event_target.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
|
||||
}
|
||||
|
||||
|
@ -704,33 +713,29 @@ static HRESULT HTMLAnchorElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv)
|
|||
static HRESULT HTMLAnchorElement_handle_event(HTMLDOMNode *iface, eventid_t eid, nsIDOMEvent *event, BOOL *prevent_default)
|
||||
{
|
||||
HTMLAnchorElement *This = impl_from_HTMLDOMNode(iface);
|
||||
nsAString href_str, target_str;
|
||||
nsresult nsres;
|
||||
|
||||
if(eid == EVENTID_CLICK) {
|
||||
nsIDOMMouseEvent *mouse_event;
|
||||
INT16 button;
|
||||
nsresult nsres;
|
||||
|
||||
TRACE("CLICK\n");
|
||||
|
||||
nsres = nsIDOMEvent_QueryInterface(event, &IID_nsIDOMMouseEvent, (void**)&mouse_event);
|
||||
assert(nsres == NS_OK);
|
||||
|
||||
nsres = nsIDOMMouseEvent_GetButton(mouse_event, &button);
|
||||
assert(nsres == NS_OK);
|
||||
|
||||
nsIDOMMouseEvent_Release(mouse_event);
|
||||
|
||||
switch(button) {
|
||||
case 0:
|
||||
*prevent_default = TRUE;
|
||||
return navigate_anchor(This);
|
||||
case 1:
|
||||
*prevent_default = TRUE;
|
||||
return navigate_anchor_window(This, NULL);
|
||||
default:
|
||||
*prevent_default = FALSE;
|
||||
return S_OK;
|
||||
nsAString_Init(&href_str, NULL);
|
||||
nsres = nsIDOMHTMLAnchorElement_GetHref(This->nsanchor, &href_str);
|
||||
if (NS_FAILED(nsres)) {
|
||||
ERR("Could not get anchor href: %08x\n", nsres);
|
||||
goto fallback;
|
||||
}
|
||||
|
||||
nsAString_Init(&target_str, NULL);
|
||||
nsres = nsIDOMHTMLAnchorElement_GetTarget(This->nsanchor, &target_str);
|
||||
if (NS_FAILED(nsres)) {
|
||||
ERR("Could not get anchor target: %08x\n", nsres);
|
||||
goto fallback;
|
||||
}
|
||||
|
||||
return handle_link_click_event(&This->element, &href_str, &target_str, event, prevent_default);
|
||||
|
||||
fallback:
|
||||
nsAString_Finish(&href_str);
|
||||
nsAString_Finish(&target_str);
|
||||
}
|
||||
|
||||
return HTMLElement_handle_event(&This->element.node, eid, event, prevent_default);
|
||||
|
|
462
reactos/dll/win32/mshtml/htmlarea.c
Normal file
462
reactos/dll/win32/mshtml/htmlarea.c
Normal file
|
@ -0,0 +1,462 @@
|
|||
/*
|
||||
* Copyright 2015 Alex Henrie
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#include "mshtml_private.h"
|
||||
|
||||
typedef struct {
|
||||
HTMLElement element;
|
||||
|
||||
IHTMLAreaElement IHTMLAreaElement_iface;
|
||||
|
||||
nsIDOMHTMLAreaElement *nsarea;
|
||||
} HTMLAreaElement;
|
||||
|
||||
static inline HTMLAreaElement *impl_from_IHTMLAreaElement(IHTMLAreaElement *iface)
|
||||
{
|
||||
return CONTAINING_RECORD(iface, HTMLAreaElement, IHTMLAreaElement_iface);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLAreaElement_QueryInterface(IHTMLAreaElement *iface, REFIID riid, void **ppv)
|
||||
{
|
||||
HTMLAreaElement *This = impl_from_IHTMLAreaElement(iface);
|
||||
|
||||
return IHTMLDOMNode_QueryInterface(&This->element.node.IHTMLDOMNode_iface, riid, ppv);
|
||||
}
|
||||
|
||||
static ULONG WINAPI HTMLAreaElement_AddRef(IHTMLAreaElement *iface)
|
||||
{
|
||||
HTMLAreaElement *This = impl_from_IHTMLAreaElement(iface);
|
||||
|
||||
return IHTMLDOMNode_AddRef(&This->element.node.IHTMLDOMNode_iface);
|
||||
}
|
||||
|
||||
static ULONG WINAPI HTMLAreaElement_Release(IHTMLAreaElement *iface)
|
||||
{
|
||||
HTMLAreaElement *This = impl_from_IHTMLAreaElement(iface);
|
||||
|
||||
return IHTMLDOMNode_Release(&This->element.node.IHTMLDOMNode_iface);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLAreaElement_GetTypeInfoCount(IHTMLAreaElement *iface, UINT *pctinfo)
|
||||
{
|
||||
HTMLAreaElement *This = impl_from_IHTMLAreaElement(iface);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.event_target.dispex.IDispatchEx_iface, pctinfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLAreaElement_GetTypeInfo(IHTMLAreaElement *iface, UINT iTInfo,
|
||||
LCID lcid, ITypeInfo **ppTInfo)
|
||||
{
|
||||
HTMLAreaElement *This = impl_from_IHTMLAreaElement(iface);
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.event_target.dispex.IDispatchEx_iface, iTInfo, lcid,
|
||||
ppTInfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLAreaElement_GetIDsOfNames(IHTMLAreaElement *iface, REFIID riid,
|
||||
LPOLESTR *rgszNames, UINT cNames,
|
||||
LCID lcid, DISPID *rgDispId)
|
||||
{
|
||||
HTMLAreaElement *This = impl_from_IHTMLAreaElement(iface);
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.event_target.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
cNames, lcid, rgDispId);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLAreaElement_Invoke(IHTMLAreaElement *iface, DISPID dispIdMember,
|
||||
REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams,
|
||||
VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
|
||||
{
|
||||
HTMLAreaElement *This = impl_from_IHTMLAreaElement(iface);
|
||||
return IDispatchEx_Invoke(&This->element.node.event_target.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLAreaElement_put_shape(IHTMLAreaElement *iface, BSTR v)
|
||||
{
|
||||
HTMLAreaElement *This = impl_from_IHTMLAreaElement(iface);
|
||||
FIXME("(%p)->(%s)\n", This, debugstr_w(v));
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLAreaElement_get_shape(IHTMLAreaElement *iface, BSTR *p)
|
||||
{
|
||||
HTMLAreaElement *This = impl_from_IHTMLAreaElement(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLAreaElement_put_coords(IHTMLAreaElement *iface, BSTR v)
|
||||
{
|
||||
HTMLAreaElement *This = impl_from_IHTMLAreaElement(iface);
|
||||
FIXME("(%p)->(%s)\n", This, debugstr_w(v));
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLAreaElement_get_coords(IHTMLAreaElement *iface, BSTR *p)
|
||||
{
|
||||
HTMLAreaElement *This = impl_from_IHTMLAreaElement(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLAreaElement_put_href(IHTMLAreaElement *iface, BSTR v)
|
||||
{
|
||||
HTMLAreaElement *This = impl_from_IHTMLAreaElement(iface);
|
||||
FIXME("(%p)->(%s)\n", This, debugstr_w(v));
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLAreaElement_get_href(IHTMLAreaElement *iface, BSTR *p)
|
||||
{
|
||||
HTMLAreaElement *This = impl_from_IHTMLAreaElement(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLAreaElement_put_target(IHTMLAreaElement *iface, BSTR v)
|
||||
{
|
||||
HTMLAreaElement *This = impl_from_IHTMLAreaElement(iface);
|
||||
FIXME("(%p)->(%s)\n", This, debugstr_w(v));
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLAreaElement_get_target(IHTMLAreaElement *iface, BSTR *p)
|
||||
{
|
||||
HTMLAreaElement *This = impl_from_IHTMLAreaElement(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLAreaElement_put_alt(IHTMLAreaElement *iface, BSTR v)
|
||||
{
|
||||
HTMLAreaElement *This = impl_from_IHTMLAreaElement(iface);
|
||||
FIXME("(%p)->(%s)\n", This, debugstr_w(v));
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLAreaElement_get_alt(IHTMLAreaElement *iface, BSTR *p)
|
||||
{
|
||||
HTMLAreaElement *This = impl_from_IHTMLAreaElement(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLAreaElement_put_noHref(IHTMLAreaElement *iface, VARIANT_BOOL v)
|
||||
{
|
||||
HTMLAreaElement *This = impl_from_IHTMLAreaElement(iface);
|
||||
FIXME("(%p)->(%i)\n", This, v);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLAreaElement_get_noHref(IHTMLAreaElement *iface, VARIANT_BOOL *p)
|
||||
{
|
||||
HTMLAreaElement *This = impl_from_IHTMLAreaElement(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLAreaElement_put_host(IHTMLAreaElement *iface, BSTR v)
|
||||
{
|
||||
HTMLAreaElement *This = impl_from_IHTMLAreaElement(iface);
|
||||
FIXME("(%p)->(%s)\n", This, debugstr_w(v));
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLAreaElement_get_host(IHTMLAreaElement *iface, BSTR *p)
|
||||
{
|
||||
HTMLAreaElement *This = impl_from_IHTMLAreaElement(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLAreaElement_put_hostname(IHTMLAreaElement *iface, BSTR v)
|
||||
{
|
||||
HTMLAreaElement *This = impl_from_IHTMLAreaElement(iface);
|
||||
FIXME("(%p)->(%s)\n", This, debugstr_w(v));
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLAreaElement_get_hostname(IHTMLAreaElement *iface, BSTR *p)
|
||||
{
|
||||
HTMLAreaElement *This = impl_from_IHTMLAreaElement(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLAreaElement_put_pathname(IHTMLAreaElement *iface, BSTR v)
|
||||
{
|
||||
HTMLAreaElement *This = impl_from_IHTMLAreaElement(iface);
|
||||
FIXME("(%p)->(%s)\n", This, debugstr_w(v));
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLAreaElement_get_pathname(IHTMLAreaElement *iface, BSTR *p)
|
||||
{
|
||||
HTMLAreaElement *This = impl_from_IHTMLAreaElement(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLAreaElement_put_port(IHTMLAreaElement *iface, BSTR v)
|
||||
{
|
||||
HTMLAreaElement *This = impl_from_IHTMLAreaElement(iface);
|
||||
FIXME("(%p)->(%s)\n", This, debugstr_w(v));
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLAreaElement_get_port(IHTMLAreaElement *iface, BSTR *p)
|
||||
{
|
||||
HTMLAreaElement *This = impl_from_IHTMLAreaElement(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLAreaElement_put_protocol(IHTMLAreaElement *iface, BSTR v)
|
||||
{
|
||||
HTMLAreaElement *This = impl_from_IHTMLAreaElement(iface);
|
||||
FIXME("(%p)->(%s)\n", This, debugstr_w(v));
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLAreaElement_get_protocol(IHTMLAreaElement *iface, BSTR *p)
|
||||
{
|
||||
HTMLAreaElement *This = impl_from_IHTMLAreaElement(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLAreaElement_put_search(IHTMLAreaElement *iface, BSTR v)
|
||||
{
|
||||
HTMLAreaElement *This = impl_from_IHTMLAreaElement(iface);
|
||||
FIXME("(%p)->(%s)\n", This, debugstr_w(v));
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLAreaElement_get_search(IHTMLAreaElement *iface, BSTR *p)
|
||||
{
|
||||
HTMLAreaElement *This = impl_from_IHTMLAreaElement(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLAreaElement_put_hash(IHTMLAreaElement *iface, BSTR v)
|
||||
{
|
||||
HTMLAreaElement *This = impl_from_IHTMLAreaElement(iface);
|
||||
FIXME("(%p)->(%s)\n", This, debugstr_w(v));
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLAreaElement_get_hash(IHTMLAreaElement *iface, BSTR *p)
|
||||
{
|
||||
HTMLAreaElement *This = impl_from_IHTMLAreaElement(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLAreaElement_put_onblur(IHTMLAreaElement *iface, VARIANT v)
|
||||
{
|
||||
HTMLAreaElement *This = impl_from_IHTMLAreaElement(iface);
|
||||
FIXME("(%p)->(%p)\n", This, &v);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLAreaElement_get_onblur(IHTMLAreaElement *iface, VARIANT *p)
|
||||
{
|
||||
HTMLAreaElement *This = impl_from_IHTMLAreaElement(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLAreaElement_put_onfocus(IHTMLAreaElement *iface, VARIANT v)
|
||||
{
|
||||
HTMLAreaElement *This = impl_from_IHTMLAreaElement(iface);
|
||||
FIXME("(%p)->(%p)\n", This, &v);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLAreaElement_get_onfocus(IHTMLAreaElement *iface, VARIANT *p)
|
||||
{
|
||||
HTMLAreaElement *This = impl_from_IHTMLAreaElement(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLAreaElement_put_tabIndex(IHTMLAreaElement *iface, short v)
|
||||
{
|
||||
HTMLAreaElement *This = impl_from_IHTMLAreaElement(iface);
|
||||
FIXME("(%p)->(%i)\n", This, v);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLAreaElement_get_tabIndex(IHTMLAreaElement *iface, short *p)
|
||||
{
|
||||
HTMLAreaElement *This = impl_from_IHTMLAreaElement(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLAreaElement_focus(IHTMLAreaElement *iface)
|
||||
{
|
||||
HTMLAreaElement *This = impl_from_IHTMLAreaElement(iface);
|
||||
FIXME("(%p)\n", This);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLAreaElement_blur(IHTMLAreaElement *iface)
|
||||
{
|
||||
HTMLAreaElement *This = impl_from_IHTMLAreaElement(iface);
|
||||
FIXME("(%p)\n", This);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static const IHTMLAreaElementVtbl HTMLAreaElementVtbl = {
|
||||
HTMLAreaElement_QueryInterface,
|
||||
HTMLAreaElement_AddRef,
|
||||
HTMLAreaElement_Release,
|
||||
HTMLAreaElement_GetTypeInfoCount,
|
||||
HTMLAreaElement_GetTypeInfo,
|
||||
HTMLAreaElement_GetIDsOfNames,
|
||||
HTMLAreaElement_Invoke,
|
||||
HTMLAreaElement_put_shape,
|
||||
HTMLAreaElement_get_shape,
|
||||
HTMLAreaElement_put_coords,
|
||||
HTMLAreaElement_get_coords,
|
||||
HTMLAreaElement_put_href,
|
||||
HTMLAreaElement_get_href,
|
||||
HTMLAreaElement_put_target,
|
||||
HTMLAreaElement_get_target,
|
||||
HTMLAreaElement_put_alt,
|
||||
HTMLAreaElement_get_alt,
|
||||
HTMLAreaElement_put_noHref,
|
||||
HTMLAreaElement_get_noHref,
|
||||
HTMLAreaElement_put_host,
|
||||
HTMLAreaElement_get_host,
|
||||
HTMLAreaElement_put_hostname,
|
||||
HTMLAreaElement_get_hostname,
|
||||
HTMLAreaElement_put_pathname,
|
||||
HTMLAreaElement_get_pathname,
|
||||
HTMLAreaElement_put_port,
|
||||
HTMLAreaElement_get_port,
|
||||
HTMLAreaElement_put_protocol,
|
||||
HTMLAreaElement_get_protocol,
|
||||
HTMLAreaElement_put_search,
|
||||
HTMLAreaElement_get_search,
|
||||
HTMLAreaElement_put_hash,
|
||||
HTMLAreaElement_get_hash,
|
||||
HTMLAreaElement_put_onblur,
|
||||
HTMLAreaElement_get_onblur,
|
||||
HTMLAreaElement_put_onfocus,
|
||||
HTMLAreaElement_get_onfocus,
|
||||
HTMLAreaElement_put_tabIndex,
|
||||
HTMLAreaElement_get_tabIndex,
|
||||
HTMLAreaElement_focus,
|
||||
HTMLAreaElement_blur
|
||||
};
|
||||
|
||||
static inline HTMLAreaElement *impl_from_HTMLDOMNode(HTMLDOMNode *iface)
|
||||
{
|
||||
return CONTAINING_RECORD(iface, HTMLAreaElement, element.node);
|
||||
}
|
||||
|
||||
static HRESULT HTMLAreaElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv)
|
||||
{
|
||||
HTMLAreaElement *This = impl_from_HTMLDOMNode(iface);
|
||||
|
||||
*ppv = NULL;
|
||||
|
||||
if(IsEqualGUID(&IID_IHTMLAreaElement, riid)) {
|
||||
TRACE("(%p)->(IID_IHTMLAreaElement %p)\n", This, ppv);
|
||||
*ppv = &This->IHTMLAreaElement_iface;
|
||||
}else {
|
||||
return HTMLElement_QI(&This->element.node, riid, ppv);
|
||||
}
|
||||
|
||||
IUnknown_AddRef((IUnknown*)*ppv);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT HTMLAreaElement_handle_event(HTMLDOMNode *iface, eventid_t eid, nsIDOMEvent *event, BOOL *prevent_default)
|
||||
{
|
||||
HTMLAreaElement *This = impl_from_HTMLDOMNode(iface);
|
||||
nsAString href_str, target_str;
|
||||
nsresult nsres;
|
||||
|
||||
if(eid == EVENTID_CLICK) {
|
||||
nsAString_Init(&href_str, NULL);
|
||||
nsres = nsIDOMHTMLAreaElement_GetHref(This->nsarea, &href_str);
|
||||
if (NS_FAILED(nsres)) {
|
||||
ERR("Could not get area href: %08x\n", nsres);
|
||||
goto fallback;
|
||||
}
|
||||
|
||||
nsAString_Init(&target_str, NULL);
|
||||
nsres = nsIDOMHTMLAreaElement_GetTarget(This->nsarea, &target_str);
|
||||
if (NS_FAILED(nsres)) {
|
||||
ERR("Could not get area target: %08x\n", nsres);
|
||||
goto fallback;
|
||||
}
|
||||
|
||||
return handle_link_click_event(&This->element, &href_str, &target_str, event, prevent_default);
|
||||
|
||||
fallback:
|
||||
nsAString_Finish(&href_str);
|
||||
nsAString_Finish(&target_str);
|
||||
}
|
||||
|
||||
return HTMLElement_handle_event(&This->element.node, eid, event, prevent_default);
|
||||
}
|
||||
|
||||
static const NodeImplVtbl HTMLAreaElementImplVtbl = {
|
||||
HTMLAreaElement_QI,
|
||||
HTMLElement_destructor,
|
||||
HTMLElement_cpc,
|
||||
HTMLElement_clone,
|
||||
HTMLAreaElement_handle_event,
|
||||
HTMLElement_get_attr_col
|
||||
};
|
||||
|
||||
static const tid_t HTMLAreaElement_iface_tids[] = {
|
||||
HTMLELEMENT_TIDS,
|
||||
IHTMLAreaElement_tid,
|
||||
0
|
||||
};
|
||||
static dispex_static_data_t HTMLAreaElement_dispex = {
|
||||
NULL,
|
||||
DispHTMLAreaElement_tid,
|
||||
NULL,
|
||||
HTMLAreaElement_iface_tids
|
||||
};
|
||||
|
||||
HRESULT HTMLAreaElement_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem, HTMLElement **elem)
|
||||
{
|
||||
HTMLAreaElement *ret;
|
||||
nsresult nsres;
|
||||
|
||||
ret = heap_alloc_zero(sizeof(HTMLAreaElement));
|
||||
if(!ret)
|
||||
return E_OUTOFMEMORY;
|
||||
|
||||
ret->IHTMLAreaElement_iface.lpVtbl = &HTMLAreaElementVtbl;
|
||||
ret->element.node.vtbl = &HTMLAreaElementImplVtbl;
|
||||
|
||||
HTMLElement_Init(&ret->element, doc, nselem, &HTMLAreaElement_dispex);
|
||||
|
||||
nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLAreaElement, (void**)&ret->nsarea);
|
||||
assert(nsres == NS_OK);
|
||||
|
||||
*elem = &ret->element;
|
||||
return S_OK;
|
||||
}
|
|
@ -34,6 +34,8 @@ static HRESULT WINAPI HTMLDOMAttribute_QueryInterface(IHTMLDOMAttribute *iface,
|
|||
*ppv = &This->IHTMLDOMAttribute_iface;
|
||||
}else if(IsEqualGUID(&IID_IHTMLDOMAttribute, riid)) {
|
||||
*ppv = &This->IHTMLDOMAttribute_iface;
|
||||
}else if(IsEqualGUID(&IID_IHTMLDOMAttribute2, riid)) {
|
||||
*ppv = &This->IHTMLDOMAttribute2_iface;
|
||||
}else if(dispex_query_interface(&This->dispex, riid, ppv)) {
|
||||
return *ppv ? S_OK : E_NOINTERFACE;
|
||||
}else {
|
||||
|
@ -120,7 +122,7 @@ static HRESULT WINAPI HTMLDOMAttribute_get_nodeName(IHTMLDOMAttribute *iface, BS
|
|||
return *p ? S_OK : E_OUTOFMEMORY;
|
||||
}
|
||||
|
||||
return IDispatchEx_GetMemberName(&This->elem->node.dispex.IDispatchEx_iface, This->dispid, p);
|
||||
return IDispatchEx_GetMemberName(&This->elem->node.event_target.dispex.IDispatchEx_iface, This->dispid, p);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLDOMAttribute_put_nodeValue(IHTMLDOMAttribute *iface, VARIANT v)
|
||||
|
@ -140,15 +142,13 @@ static HRESULT WINAPI HTMLDOMAttribute_put_nodeValue(IHTMLDOMAttribute *iface, V
|
|||
|
||||
memset(&ei, 0, sizeof(ei));
|
||||
|
||||
return IDispatchEx_InvokeEx(&This->elem->node.dispex.IDispatchEx_iface, This->dispid, LOCALE_SYSTEM_DEFAULT,
|
||||
return IDispatchEx_InvokeEx(&This->elem->node.event_target.dispex.IDispatchEx_iface, This->dispid, LOCALE_SYSTEM_DEFAULT,
|
||||
DISPATCH_PROPERTYPUT, &dp, &ret, &ei, NULL);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLDOMAttribute_get_nodeValue(IHTMLDOMAttribute *iface, VARIANT *p)
|
||||
{
|
||||
HTMLDOMAttribute *This = impl_from_IHTMLDOMAttribute(iface);
|
||||
DISPPARAMS dp = {NULL, NULL, 0, 0};
|
||||
EXCEPINFO ei;
|
||||
|
||||
TRACE("(%p)->(%p)\n", This, p);
|
||||
|
||||
|
@ -157,9 +157,7 @@ static HRESULT WINAPI HTMLDOMAttribute_get_nodeValue(IHTMLDOMAttribute *iface, V
|
|||
return E_UNEXPECTED;
|
||||
}
|
||||
|
||||
memset(&ei, 0, sizeof(ei));
|
||||
return IDispatchEx_InvokeEx(&This->elem->node.dispex.IDispatchEx_iface, This->dispid, LOCALE_SYSTEM_DEFAULT,
|
||||
DISPATCH_PROPERTYGET, &dp, p, &ei, NULL);
|
||||
return get_elem_attr_value_by_dispid(This->elem, This->dispid, 0, p);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLDOMAttribute_get_specified(IHTMLDOMAttribute *iface, VARIANT_BOOL *p)
|
||||
|
@ -183,7 +181,7 @@ static HRESULT WINAPI HTMLDOMAttribute_get_specified(IHTMLDOMAttribute *iface, V
|
|||
return S_OK;
|
||||
}
|
||||
|
||||
hres = IDispatchEx_GetMemberName(&This->elem->node.dispex.IDispatchEx_iface, This->dispid, &name);
|
||||
hres = IDispatchEx_GetMemberName(&This->elem->node.event_target.dispex.IDispatchEx_iface, This->dispid, &name);
|
||||
if(FAILED(hres))
|
||||
return hres;
|
||||
|
||||
|
@ -220,8 +218,249 @@ static const IHTMLDOMAttributeVtbl HTMLDOMAttributeVtbl = {
|
|||
HTMLDOMAttribute_get_specified
|
||||
};
|
||||
|
||||
static inline HTMLDOMAttribute *impl_from_IHTMLDOMAttribute2(IHTMLDOMAttribute2 *iface)
|
||||
{
|
||||
return CONTAINING_RECORD(iface, HTMLDOMAttribute, IHTMLDOMAttribute2_iface);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLDOMAttribute2_QueryInterface(IHTMLDOMAttribute2 *iface, REFIID riid, void **ppv)
|
||||
{
|
||||
HTMLDOMAttribute *This = impl_from_IHTMLDOMAttribute2(iface);
|
||||
return IHTMLDOMAttribute_QueryInterface(&This->IHTMLDOMAttribute_iface, riid, ppv);
|
||||
}
|
||||
|
||||
static ULONG WINAPI HTMLDOMAttribute2_AddRef(IHTMLDOMAttribute2 *iface)
|
||||
{
|
||||
HTMLDOMAttribute *This = impl_from_IHTMLDOMAttribute2(iface);
|
||||
return IHTMLDOMAttribute_AddRef(&This->IHTMLDOMAttribute_iface);
|
||||
}
|
||||
|
||||
static ULONG WINAPI HTMLDOMAttribute2_Release(IHTMLDOMAttribute2 *iface)
|
||||
{
|
||||
HTMLDOMAttribute *This = impl_from_IHTMLDOMAttribute2(iface);
|
||||
return IHTMLDOMAttribute_Release(&This->IHTMLDOMAttribute_iface);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLDOMAttribute2_GetTypeInfoCount(IHTMLDOMAttribute2 *iface, UINT *pctinfo)
|
||||
{
|
||||
HTMLDOMAttribute *This = impl_from_IHTMLDOMAttribute2(iface);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->dispex.IDispatchEx_iface, pctinfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLDOMAttribute2_GetTypeInfo(IHTMLDOMAttribute2 *iface, UINT iTInfo,
|
||||
LCID lcid, ITypeInfo **ppTInfo)
|
||||
{
|
||||
HTMLDOMAttribute *This = impl_from_IHTMLDOMAttribute2(iface);
|
||||
return IDispatchEx_GetTypeInfo(&This->dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLDOMAttribute2_GetIDsOfNames(IHTMLDOMAttribute2 *iface, REFIID riid,
|
||||
LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
|
||||
{
|
||||
HTMLDOMAttribute *This = impl_from_IHTMLDOMAttribute2(iface);
|
||||
return IDispatchEx_GetIDsOfNames(&This->dispex.IDispatchEx_iface, riid, rgszNames, cNames,
|
||||
lcid, rgDispId);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLDOMAttribute2_Invoke(IHTMLDOMAttribute2 *iface, DISPID dispIdMember,
|
||||
REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams,
|
||||
VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
|
||||
{
|
||||
HTMLDOMAttribute *This = impl_from_IHTMLDOMAttribute2(iface);
|
||||
return IDispatchEx_Invoke(&This->dispex.IDispatchEx_iface, dispIdMember, riid, lcid,
|
||||
wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLDOMAttribute2_get_name(IHTMLDOMAttribute2 *iface, BSTR *p)
|
||||
{
|
||||
HTMLDOMAttribute *This = impl_from_IHTMLDOMAttribute2(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLDOMAttribute2_put_value(IHTMLDOMAttribute2 *iface, BSTR v)
|
||||
{
|
||||
HTMLDOMAttribute *This = impl_from_IHTMLDOMAttribute2(iface);
|
||||
FIXME("(%p)->(%s)\n", This, debugstr_w(v));
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLDOMAttribute2_get_value(IHTMLDOMAttribute2 *iface, BSTR *p)
|
||||
{
|
||||
HTMLDOMAttribute *This = impl_from_IHTMLDOMAttribute2(iface);
|
||||
VARIANT val;
|
||||
HRESULT hres;
|
||||
|
||||
TRACE("(%p)->(%p)\n", This, p);
|
||||
|
||||
if(!This->elem) {
|
||||
FIXME("NULL This->elem\n");
|
||||
return E_UNEXPECTED;
|
||||
}
|
||||
|
||||
hres = get_elem_attr_value_by_dispid(This->elem, This->dispid, ATTRFLAG_ASSTRING, &val);
|
||||
if(FAILED(hres))
|
||||
return hres;
|
||||
|
||||
assert(V_VT(&val) == VT_BSTR);
|
||||
*p = V_BSTR(&val);
|
||||
if(!*p && !(*p = SysAllocStringLen(NULL, 0)))
|
||||
return E_OUTOFMEMORY;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLDOMAttribute2_get_expando(IHTMLDOMAttribute2 *iface, VARIANT_BOOL *p)
|
||||
{
|
||||
HTMLDOMAttribute *This = impl_from_IHTMLDOMAttribute2(iface);
|
||||
|
||||
TRACE("(%p)->(%p)\n", This, p);
|
||||
|
||||
*p = get_dispid_type(This->dispid) == DISPEXPROP_BUILTIN ? VARIANT_FALSE : VARIANT_TRUE;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLDOMAttribute2_get_nodeType(IHTMLDOMAttribute2 *iface, LONG *p)
|
||||
{
|
||||
HTMLDOMAttribute *This = impl_from_IHTMLDOMAttribute2(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLDOMAttribute2_get_parentNode(IHTMLDOMAttribute2 *iface, IHTMLDOMNode **p)
|
||||
{
|
||||
HTMLDOMAttribute *This = impl_from_IHTMLDOMAttribute2(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLDOMAttribute2_get_childNodes(IHTMLDOMAttribute2 *iface, IDispatch **p)
|
||||
{
|
||||
HTMLDOMAttribute *This = impl_from_IHTMLDOMAttribute2(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLDOMAttribute2_get_firstChild(IHTMLDOMAttribute2 *iface, IHTMLDOMNode **p)
|
||||
{
|
||||
HTMLDOMAttribute *This = impl_from_IHTMLDOMAttribute2(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLDOMAttribute2_get_lastChild(IHTMLDOMAttribute2 *iface, IHTMLDOMNode **p)
|
||||
{
|
||||
HTMLDOMAttribute *This = impl_from_IHTMLDOMAttribute2(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLDOMAttribute2_get_previousSibling(IHTMLDOMAttribute2 *iface, IHTMLDOMNode **p)
|
||||
{
|
||||
HTMLDOMAttribute *This = impl_from_IHTMLDOMAttribute2(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLDOMAttribute2_get_nextSibling(IHTMLDOMAttribute2 *iface, IHTMLDOMNode **p)
|
||||
{
|
||||
HTMLDOMAttribute *This = impl_from_IHTMLDOMAttribute2(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLDOMAttribute2_get_attributes(IHTMLDOMAttribute2 *iface, IDispatch **p)
|
||||
{
|
||||
HTMLDOMAttribute *This = impl_from_IHTMLDOMAttribute2(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLDOMAttribute2_get_ownerDocument(IHTMLDOMAttribute2 *iface, IDispatch **p)
|
||||
{
|
||||
HTMLDOMAttribute *This = impl_from_IHTMLDOMAttribute2(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLDOMAttribute2_insertBefore(IHTMLDOMAttribute2 *iface, IHTMLDOMNode *newChild,
|
||||
VARIANT refChild, IHTMLDOMNode **node)
|
||||
{
|
||||
HTMLDOMAttribute *This = impl_from_IHTMLDOMAttribute2(iface);
|
||||
FIXME("(%p)->(%p %s %p)\n", This, newChild, debugstr_variant(&refChild), node);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLDOMAttribute2_replaceChild(IHTMLDOMAttribute2 *iface, IHTMLDOMNode *newChild,
|
||||
IHTMLDOMNode *oldChild, IHTMLDOMNode **node)
|
||||
{
|
||||
HTMLDOMAttribute *This = impl_from_IHTMLDOMAttribute2(iface);
|
||||
FIXME("(%p)->(%p %p %p)\n", This, newChild, oldChild, node);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLDOMAttribute2_removeChild(IHTMLDOMAttribute2 *iface, IHTMLDOMNode *oldChild,
|
||||
IHTMLDOMNode **node)
|
||||
{
|
||||
HTMLDOMAttribute *This = impl_from_IHTMLDOMAttribute2(iface);
|
||||
FIXME("(%p)->(%p %p)\n", This, oldChild, node);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLDOMAttribute2_appendChild(IHTMLDOMAttribute2 *iface, IHTMLDOMNode *newChild,
|
||||
IHTMLDOMNode **node)
|
||||
{
|
||||
HTMLDOMAttribute *This = impl_from_IHTMLDOMAttribute2(iface);
|
||||
FIXME("(%p)->(%p %p)\n", This, newChild, node);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLDOMAttribute2_hasChildNodes(IHTMLDOMAttribute2 *iface, VARIANT_BOOL *fChildren)
|
||||
{
|
||||
HTMLDOMAttribute *This = impl_from_IHTMLDOMAttribute2(iface);
|
||||
FIXME("(%p)->(%p)\n", This, fChildren);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLDOMAttribute2_cloneNode(IHTMLDOMAttribute2 *iface, VARIANT_BOOL fDeep,
|
||||
IHTMLDOMAttribute **clonedNode)
|
||||
{
|
||||
HTMLDOMAttribute *This = impl_from_IHTMLDOMAttribute2(iface);
|
||||
FIXME("(%p)->(%x %p)\n", This, fDeep, clonedNode);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static const IHTMLDOMAttribute2Vtbl HTMLDOMAttribute2Vtbl = {
|
||||
HTMLDOMAttribute2_QueryInterface,
|
||||
HTMLDOMAttribute2_AddRef,
|
||||
HTMLDOMAttribute2_Release,
|
||||
HTMLDOMAttribute2_GetTypeInfoCount,
|
||||
HTMLDOMAttribute2_GetTypeInfo,
|
||||
HTMLDOMAttribute2_GetIDsOfNames,
|
||||
HTMLDOMAttribute2_Invoke,
|
||||
HTMLDOMAttribute2_get_name,
|
||||
HTMLDOMAttribute2_put_value,
|
||||
HTMLDOMAttribute2_get_value,
|
||||
HTMLDOMAttribute2_get_expando,
|
||||
HTMLDOMAttribute2_get_nodeType,
|
||||
HTMLDOMAttribute2_get_parentNode,
|
||||
HTMLDOMAttribute2_get_childNodes,
|
||||
HTMLDOMAttribute2_get_firstChild,
|
||||
HTMLDOMAttribute2_get_lastChild,
|
||||
HTMLDOMAttribute2_get_previousSibling,
|
||||
HTMLDOMAttribute2_get_nextSibling,
|
||||
HTMLDOMAttribute2_get_attributes,
|
||||
HTMLDOMAttribute2_get_ownerDocument,
|
||||
HTMLDOMAttribute2_insertBefore,
|
||||
HTMLDOMAttribute2_replaceChild,
|
||||
HTMLDOMAttribute2_removeChild,
|
||||
HTMLDOMAttribute2_appendChild,
|
||||
HTMLDOMAttribute2_hasChildNodes,
|
||||
HTMLDOMAttribute2_cloneNode
|
||||
};
|
||||
|
||||
static const tid_t HTMLDOMAttribute_iface_tids[] = {
|
||||
IHTMLDOMAttribute_tid,
|
||||
IHTMLDOMAttribute2_tid,
|
||||
0
|
||||
};
|
||||
static dispex_static_data_t HTMLDOMAttribute_dispex = {
|
||||
|
@ -242,6 +481,7 @@ HRESULT HTMLDOMAttribute_Create(const WCHAR *name, HTMLElement *elem, DISPID dis
|
|||
return E_OUTOFMEMORY;
|
||||
|
||||
ret->IHTMLDOMAttribute_iface.lpVtbl = &HTMLDOMAttributeVtbl;
|
||||
ret->IHTMLDOMAttribute2_iface.lpVtbl = &HTMLDOMAttribute2Vtbl;
|
||||
ret->ref = 1;
|
||||
ret->dispid = dispid;
|
||||
ret->elem = elem;
|
||||
|
|
|
@ -222,7 +222,7 @@ static ULONG WINAPI HTMLBodyElement_Release(IHTMLBodyElement *iface)
|
|||
static HRESULT WINAPI HTMLBodyElement_GetTypeInfoCount(IHTMLBodyElement *iface, UINT *pctinfo)
|
||||
{
|
||||
HTMLBodyElement *This = impl_from_IHTMLBodyElement(iface);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->textcont.element.node.dispex.IDispatchEx_iface,
|
||||
return IDispatchEx_GetTypeInfoCount(&This->textcont.element.node.event_target.dispex.IDispatchEx_iface,
|
||||
pctinfo);
|
||||
}
|
||||
|
||||
|
@ -230,7 +230,7 @@ static HRESULT WINAPI HTMLBodyElement_GetTypeInfo(IHTMLBodyElement *iface, UINT
|
|||
LCID lcid, ITypeInfo **ppTInfo)
|
||||
{
|
||||
HTMLBodyElement *This = impl_from_IHTMLBodyElement(iface);
|
||||
return IDispatchEx_GetTypeInfo(&This->textcont.element.node.dispex.IDispatchEx_iface, iTInfo,
|
||||
return IDispatchEx_GetTypeInfo(&This->textcont.element.node.event_target.dispex.IDispatchEx_iface, iTInfo,
|
||||
lcid, ppTInfo);
|
||||
}
|
||||
|
||||
|
@ -239,7 +239,7 @@ static HRESULT WINAPI HTMLBodyElement_GetIDsOfNames(IHTMLBodyElement *iface, REF
|
|||
LCID lcid, DISPID *rgDispId)
|
||||
{
|
||||
HTMLBodyElement *This = impl_from_IHTMLBodyElement(iface);
|
||||
return IDispatchEx_GetIDsOfNames(&This->textcont.element.node.dispex.IDispatchEx_iface, riid,
|
||||
return IDispatchEx_GetIDsOfNames(&This->textcont.element.node.event_target.dispex.IDispatchEx_iface, riid,
|
||||
rgszNames, cNames, lcid, rgDispId);
|
||||
}
|
||||
|
||||
|
@ -248,7 +248,7 @@ static HRESULT WINAPI HTMLBodyElement_Invoke(IHTMLBodyElement *iface, DISPID dis
|
|||
VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
|
||||
{
|
||||
HTMLBodyElement *This = impl_from_IHTMLBodyElement(iface);
|
||||
return IDispatchEx_Invoke(&This->textcont.element.node.dispex.IDispatchEx_iface, dispIdMember,
|
||||
return IDispatchEx_Invoke(&This->textcont.element.node.event_target.dispex.IDispatchEx_iface, dispIdMember,
|
||||
riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
|
||||
}
|
||||
|
||||
|
@ -808,13 +808,13 @@ static void HTMLBodyElement_unlink(HTMLDOMNode *iface)
|
|||
}
|
||||
}
|
||||
|
||||
static event_target_t **HTMLBodyElement_get_event_target(HTMLDOMNode *iface)
|
||||
static event_target_t **HTMLBodyElement_get_event_target_ptr(HTMLDOMNode *iface)
|
||||
{
|
||||
HTMLBodyElement *This = impl_from_HTMLDOMNode(iface);
|
||||
|
||||
return This->textcont.element.node.doc
|
||||
? &This->textcont.element.node.doc->body_event_target
|
||||
: &This->textcont.element.node.event_target;
|
||||
: &This->textcont.element.node.event_target.ptr;
|
||||
}
|
||||
|
||||
static BOOL HTMLBodyElement_is_text_edit(HTMLDOMNode *iface)
|
||||
|
@ -836,7 +836,7 @@ static const NodeImplVtbl HTMLBodyElementImplVtbl = {
|
|||
HTMLElement_clone,
|
||||
HTMLElement_handle_event,
|
||||
HTMLElement_get_attr_col,
|
||||
HTMLBodyElement_get_event_target,
|
||||
HTMLBodyElement_get_event_target_ptr,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
|
|
@ -53,14 +53,14 @@ static ULONG WINAPI HTMLCommentElement_Release(IHTMLCommentElement *iface)
|
|||
static HRESULT WINAPI HTMLCommentElement_GetTypeInfoCount(IHTMLCommentElement *iface, UINT *pctinfo)
|
||||
{
|
||||
HTMLCommentElement *This = impl_from_IHTMLCommentElement(iface);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.dispex.IDispatchEx_iface, pctinfo);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.event_target.dispex.IDispatchEx_iface, pctinfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLCommentElement_GetTypeInfo(IHTMLCommentElement *iface, UINT iTInfo,
|
||||
LCID lcid, ITypeInfo **ppTInfo)
|
||||
{
|
||||
HTMLCommentElement *This = impl_from_IHTMLCommentElement(iface);
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.dispex.IDispatchEx_iface, iTInfo, lcid,
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.event_target.dispex.IDispatchEx_iface, iTInfo, lcid,
|
||||
ppTInfo);
|
||||
}
|
||||
|
||||
|
@ -69,7 +69,7 @@ static HRESULT WINAPI HTMLCommentElement_GetIDsOfNames(IHTMLCommentElement *ifac
|
|||
LCID lcid, DISPID *rgDispId)
|
||||
{
|
||||
HTMLCommentElement *This = impl_from_IHTMLCommentElement(iface);
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.event_target.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
cNames, lcid, rgDispId);
|
||||
}
|
||||
|
||||
|
@ -78,7 +78,7 @@ static HRESULT WINAPI HTMLCommentElement_Invoke(IHTMLCommentElement *iface, DISP
|
|||
VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
|
||||
{
|
||||
HTMLCommentElement *This = impl_from_IHTMLCommentElement(iface);
|
||||
return IDispatchEx_Invoke(&This->element.node.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
return IDispatchEx_Invoke(&This->element.node.event_target.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
|
||||
}
|
||||
|
||||
|
|
|
@ -1177,8 +1177,10 @@ static HRESULT WINAPI HTMLCurrentStyle3_get_wordSpacing(IHTMLCurrentStyle3 *ifac
|
|||
static HRESULT WINAPI HTMLCurrentStyle3_get_whiteSpace(IHTMLCurrentStyle3 *iface, BSTR *p)
|
||||
{
|
||||
HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle3(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
|
||||
TRACE("(%p)->(%p)\n", This, p);
|
||||
|
||||
return get_nsstyle_attr(This->nsstyle, STYLEID_WHITE_SPACE, p, 0);
|
||||
}
|
||||
|
||||
static const IHTMLCurrentStyle3Vtbl HTMLCurrentStyle3Vtbl = {
|
||||
|
@ -1324,11 +1326,17 @@ HRESULT HTMLCurrentStyle_Create(HTMLElement *elem, IHTMLCurrentStyle **p)
|
|||
nsAString_Init(&nsempty_str, NULL);
|
||||
nsres = nsIDOMWindow_GetComputedStyle(nsview, (nsIDOMElement*)elem->nselem, &nsempty_str, &nsstyle);
|
||||
nsAString_Finish(&nsempty_str);
|
||||
nsIDOMWindow_Release(nsview);
|
||||
if(NS_FAILED(nsres)) {
|
||||
ERR("GetComputedStyle failed: %08x\n", nsres);
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
if(!nsstyle) {
|
||||
ERR("GetComputedStyle returned NULL nsstyle\n");
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
ret = heap_alloc_zero(sizeof(HTMLCurrentStyle));
|
||||
if(!ret) {
|
||||
nsIDOMCSSStyleDeclaration_Release(nsstyle);
|
||||
|
|
|
@ -2008,7 +2008,7 @@ static HRESULT WINAPI HTMLDocument3_attachEvent(IHTMLDocument3 *iface, BSTR even
|
|||
|
||||
TRACE("(%p)->(%s %p %p)\n", This, debugstr_w(event), pDisp, pfResult);
|
||||
|
||||
return attach_event(&This->doc_node->node.event_target, This, event, pDisp, pfResult);
|
||||
return attach_event(&This->doc_node->node.event_target, event, pDisp, pfResult);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLDocument3_detachEvent(IHTMLDocument3 *iface, BSTR event,
|
||||
|
@ -2018,7 +2018,7 @@ static HRESULT WINAPI HTMLDocument3_detachEvent(IHTMLDocument3 *iface, BSTR even
|
|||
|
||||
TRACE("(%p)->(%s %p)\n", This, debugstr_w(event), pDisp);
|
||||
|
||||
return detach_event(This->doc_node->node.event_target, This, event, pDisp);
|
||||
return detach_event(&This->doc_node->node.event_target, event, pDisp);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLDocument3_put_onrowsdelete(IHTMLDocument3 *iface, VARIANT v)
|
||||
|
@ -2858,7 +2858,7 @@ static HRESULT WINAPI HTMLDocument5_get_compatMode(IHTMLDocument5 *iface, BSTR *
|
|||
{
|
||||
HTMLDocument *This = impl_from_IHTMLDocument5(iface);
|
||||
nsAString mode_str;
|
||||
const PRUnichar *mode;
|
||||
nsresult nsres;
|
||||
|
||||
TRACE("(%p)->(%p)\n", This, p);
|
||||
|
||||
|
@ -2868,13 +2868,8 @@ static HRESULT WINAPI HTMLDocument5_get_compatMode(IHTMLDocument5 *iface, BSTR *
|
|||
}
|
||||
|
||||
nsAString_Init(&mode_str, NULL);
|
||||
nsIDOMHTMLDocument_GetCompatMode(This->doc_node->nsdoc, &mode_str);
|
||||
|
||||
nsAString_GetData(&mode_str, &mode);
|
||||
*p = SysAllocString(mode);
|
||||
nsAString_Finish(&mode_str);
|
||||
|
||||
return S_OK;
|
||||
nsres = nsIDOMHTMLDocument_GetCompatMode(This->doc_node->nsdoc, &mode_str);
|
||||
return return_nsstr(nsres, &mode_str, p);
|
||||
}
|
||||
|
||||
static const IHTMLDocument5Vtbl HTMLDocument5Vtbl = {
|
||||
|
@ -3943,7 +3938,7 @@ static void HTMLDocument_on_advise(IUnknown *iface, cp_static_data_t *cp)
|
|||
HTMLDocument *This = impl_from_IHTMLDocument2((IHTMLDocument2*)iface);
|
||||
|
||||
if(This->window)
|
||||
update_cp_events(This->window->base.inner_window, &This->doc_node->node.event_target, cp);
|
||||
update_doc_cp_events(This->doc_node, cp);
|
||||
}
|
||||
|
||||
static inline HTMLDocument *impl_from_ISupportErrorInfo(ISupportErrorInfo *iface)
|
||||
|
@ -4507,7 +4502,7 @@ static HRESULT HTMLDocumentFragment_clone(HTMLDOMNode *iface, nsIDOMNode *nsnode
|
|||
|
||||
static inline HTMLDocumentNode *impl_from_DispatchEx(DispatchEx *iface)
|
||||
{
|
||||
return CONTAINING_RECORD(iface, HTMLDocumentNode, node.dispex);
|
||||
return CONTAINING_RECORD(iface, HTMLDocumentNode, node.event_target.dispex);
|
||||
}
|
||||
|
||||
static HRESULT HTMLDocumentNode_invoke(DispatchEx *dispex, DISPID id, LCID lcid, WORD flags, DISPPARAMS *params,
|
||||
|
@ -4552,12 +4547,19 @@ static HRESULT HTMLDocumentNode_invoke(DispatchEx *dispex, DISPID id, LCID lcid,
|
|||
return S_OK;
|
||||
}
|
||||
|
||||
static void HTMLDocumentNode_bind_event(DispatchEx *dispex, int eid)
|
||||
{
|
||||
HTMLDocumentNode *This = impl_from_DispatchEx(dispex);
|
||||
ensure_doc_nsevent_handler(This, eid);
|
||||
}
|
||||
|
||||
static const dispex_static_data_vtbl_t HTMLDocumentNode_dispex_vtbl = {
|
||||
NULL,
|
||||
NULL,
|
||||
HTMLDocumentNode_invoke,
|
||||
NULL
|
||||
NULL,
|
||||
NULL,
|
||||
HTMLDocumentNode_bind_event
|
||||
};
|
||||
|
||||
static const NodeImplVtbl HTMLDocumentFragmentImplVtbl = {
|
||||
|
@ -4598,10 +4600,10 @@ static HTMLDocumentNode *alloc_doc_node(HTMLDocumentObj *doc_obj, HTMLInnerWindo
|
|||
doc->basedoc.window = window->base.outer_window;
|
||||
doc->window = window;
|
||||
|
||||
init_dispex(&doc->node.dispex, (IUnknown*)&doc->node.IHTMLDOMNode_iface,
|
||||
init_dispex(&doc->node.event_target.dispex, (IUnknown*)&doc->node.IHTMLDOMNode_iface,
|
||||
&HTMLDocumentNode_dispex);
|
||||
init_doc(&doc->basedoc, (IUnknown*)&doc->node.IHTMLDOMNode_iface,
|
||||
&doc->node.dispex.IDispatchEx_iface);
|
||||
&doc->node.event_target.dispex.IDispatchEx_iface);
|
||||
HTMLDocumentNode_SecMgr_Init(doc);
|
||||
|
||||
list_init(&doc->selection_list);
|
||||
|
@ -4735,6 +4737,8 @@ static ULONG WINAPI CustomDoc_Release(ICustomDoc *iface)
|
|||
IOleDocumentView_SetInPlaceSite(&This->basedoc.IOleDocumentView_iface, NULL);
|
||||
if(This->undomgr)
|
||||
IOleUndoManager_Release(This->undomgr);
|
||||
if(This->editsvcs)
|
||||
IHTMLEditServices_Release(This->editsvcs);
|
||||
if(This->tooltips_hwnd)
|
||||
DestroyWindow(This->tooltips_hwnd);
|
||||
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
#include "mshtml_private.h"
|
||||
|
||||
static const WCHAR aW[] = {'A',0};
|
||||
static const WCHAR areaW[] = {'A','R','E','A',0};
|
||||
static const WCHAR bodyW[] = {'B','O','D','Y',0};
|
||||
static const WCHAR buttonW[] = {'B','U','T','T','O','N',0};
|
||||
static const WCHAR embedW[] = {'E','M','B','E','D',0};
|
||||
|
@ -49,6 +50,7 @@ typedef struct {
|
|||
|
||||
static const tag_desc_t tag_descs[] = {
|
||||
{aW, HTMLAnchorElement_Create},
|
||||
{areaW, HTMLAreaElement_Create},
|
||||
{bodyW, HTMLBodyElement_Create},
|
||||
{buttonW, HTMLButtonElement_Create},
|
||||
{embedW, HTMLEmbedElement_Create},
|
||||
|
@ -558,14 +560,14 @@ static ULONG WINAPI HTMLElement_Release(IHTMLElement *iface)
|
|||
static HRESULT WINAPI HTMLElement_GetTypeInfoCount(IHTMLElement *iface, UINT *pctinfo)
|
||||
{
|
||||
HTMLElement *This = impl_from_IHTMLElement(iface);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->node.dispex.IDispatchEx_iface, pctinfo);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->node.event_target.dispex.IDispatchEx_iface, pctinfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLElement_GetTypeInfo(IHTMLElement *iface, UINT iTInfo,
|
||||
LCID lcid, ITypeInfo **ppTInfo)
|
||||
{
|
||||
HTMLElement *This = impl_from_IHTMLElement(iface);
|
||||
return IDispatchEx_GetTypeInfo(&This->node.dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
|
||||
return IDispatchEx_GetTypeInfo(&This->node.event_target.dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLElement_GetIDsOfNames(IHTMLElement *iface, REFIID riid,
|
||||
|
@ -573,7 +575,7 @@ static HRESULT WINAPI HTMLElement_GetIDsOfNames(IHTMLElement *iface, REFIID riid
|
|||
LCID lcid, DISPID *rgDispId)
|
||||
{
|
||||
HTMLElement *This = impl_from_IHTMLElement(iface);
|
||||
return IDispatchEx_GetIDsOfNames(&This->node.dispex.IDispatchEx_iface, riid, rgszNames, cNames,
|
||||
return IDispatchEx_GetIDsOfNames(&This->node.event_target.dispex.IDispatchEx_iface, riid, rgszNames, cNames,
|
||||
lcid, rgDispId);
|
||||
}
|
||||
|
||||
|
@ -582,14 +584,10 @@ static HRESULT WINAPI HTMLElement_Invoke(IHTMLElement *iface, DISPID dispIdMembe
|
|||
VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
|
||||
{
|
||||
HTMLElement *This = impl_from_IHTMLElement(iface);
|
||||
return IDispatchEx_Invoke(&This->node.dispex.IDispatchEx_iface, dispIdMember, riid, lcid,
|
||||
return IDispatchEx_Invoke(&This->node.event_target.dispex.IDispatchEx_iface, dispIdMember, riid, lcid,
|
||||
wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
|
||||
}
|
||||
|
||||
#define ATTRFLAG_CASESENSITIVE 0x0001
|
||||
#define ATTRFLAG_ASSTRING 0x0002
|
||||
#define ATTRFLAG_EXPANDURL 0x0004
|
||||
|
||||
static HRESULT WINAPI HTMLElement_setAttribute(IHTMLElement *iface, BSTR strAttributeName,
|
||||
VARIANT AttributeValue, LONG lFlags)
|
||||
{
|
||||
|
@ -601,7 +599,7 @@ static HRESULT WINAPI HTMLElement_setAttribute(IHTMLElement *iface, BSTR strAttr
|
|||
|
||||
TRACE("(%p)->(%s %s %08x)\n", This, debugstr_w(strAttributeName), debugstr_variant(&AttributeValue), lFlags);
|
||||
|
||||
hres = IDispatchEx_GetDispID(&This->node.dispex.IDispatchEx_iface, strAttributeName,
|
||||
hres = IDispatchEx_GetDispID(&This->node.event_target.dispex.IDispatchEx_iface, strAttributeName,
|
||||
(lFlags&ATTRFLAG_CASESENSITIVE ? fdexNameCaseSensitive : fdexNameCaseInsensitive) | fdexNameEnsure, &dispid);
|
||||
if(FAILED(hres))
|
||||
return hres;
|
||||
|
@ -616,25 +614,53 @@ static HRESULT WINAPI HTMLElement_setAttribute(IHTMLElement *iface, BSTR strAttr
|
|||
dispParams.rgdispidNamedArgs = &dispidNamed;
|
||||
dispParams.rgvarg = &AttributeValue;
|
||||
|
||||
return IDispatchEx_InvokeEx(&This->node.dispex.IDispatchEx_iface, dispid,
|
||||
return IDispatchEx_InvokeEx(&This->node.event_target.dispex.IDispatchEx_iface, dispid,
|
||||
LOCALE_SYSTEM_DEFAULT, DISPATCH_PROPERTYPUT, &dispParams, NULL, &excep, NULL);
|
||||
}
|
||||
|
||||
HRESULT get_elem_attr_value_by_dispid(HTMLElement *elem, DISPID dispid, DWORD flags, VARIANT *ret)
|
||||
{
|
||||
DISPPARAMS dispParams = {NULL, NULL, 0, 0};
|
||||
EXCEPINFO excep;
|
||||
HRESULT hres;
|
||||
|
||||
hres = IDispatchEx_InvokeEx(&elem->node.event_target.dispex.IDispatchEx_iface, dispid, LOCALE_SYSTEM_DEFAULT,
|
||||
DISPATCH_PROPERTYGET, &dispParams, ret, &excep, NULL);
|
||||
if(FAILED(hres))
|
||||
return hres;
|
||||
|
||||
if(flags & ATTRFLAG_ASSTRING) {
|
||||
switch(V_VT(ret)) {
|
||||
case VT_BSTR:
|
||||
break;
|
||||
case VT_DISPATCH:
|
||||
IDispatch_Release(V_DISPATCH(ret));
|
||||
V_VT(ret) = VT_BSTR;
|
||||
V_BSTR(ret) = SysAllocString(NULL);
|
||||
break;
|
||||
default:
|
||||
hres = VariantChangeType(ret, ret, 0, VT_BSTR);
|
||||
if(FAILED(hres))
|
||||
return hres;
|
||||
}
|
||||
}
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLElement_getAttribute(IHTMLElement *iface, BSTR strAttributeName,
|
||||
LONG lFlags, VARIANT *AttributeValue)
|
||||
{
|
||||
HTMLElement *This = impl_from_IHTMLElement(iface);
|
||||
DISPID dispid;
|
||||
HRESULT hres;
|
||||
DISPPARAMS dispParams = {NULL, NULL, 0, 0};
|
||||
EXCEPINFO excep;
|
||||
|
||||
TRACE("(%p)->(%s %08x %p)\n", This, debugstr_w(strAttributeName), lFlags, AttributeValue);
|
||||
|
||||
if(lFlags & ~(ATTRFLAG_CASESENSITIVE|ATTRFLAG_ASSTRING))
|
||||
FIXME("Unsuported flags %x\n", lFlags);
|
||||
FIXME("Unsupported flags %x\n", lFlags);
|
||||
|
||||
hres = IDispatchEx_GetDispID(&This->node.dispex.IDispatchEx_iface, strAttributeName,
|
||||
hres = IDispatchEx_GetDispID(&This->node.event_target.dispex.IDispatchEx_iface, strAttributeName,
|
||||
lFlags&ATTRFLAG_CASESENSITIVE ? fdexNameCaseSensitive : fdexNameCaseInsensitive, &dispid);
|
||||
if(hres == DISP_E_UNKNOWNNAME) {
|
||||
V_VT(AttributeValue) = VT_NULL;
|
||||
|
@ -646,28 +672,7 @@ static HRESULT WINAPI HTMLElement_getAttribute(IHTMLElement *iface, BSTR strAttr
|
|||
return hres;
|
||||
}
|
||||
|
||||
hres = IDispatchEx_InvokeEx(&This->node.dispex.IDispatchEx_iface, dispid, LOCALE_SYSTEM_DEFAULT,
|
||||
DISPATCH_PROPERTYGET, &dispParams, AttributeValue, &excep, NULL);
|
||||
if(FAILED(hres))
|
||||
return hres;
|
||||
|
||||
if(lFlags & ATTRFLAG_ASSTRING) {
|
||||
switch(V_VT(AttributeValue)) {
|
||||
case VT_BSTR:
|
||||
break;
|
||||
case VT_DISPATCH:
|
||||
IDispatch_Release(V_DISPATCH(AttributeValue));
|
||||
V_VT(AttributeValue) = VT_BSTR;
|
||||
V_BSTR(AttributeValue) = SysAllocString(NULL);
|
||||
break;
|
||||
default:
|
||||
hres = VariantChangeType(AttributeValue, AttributeValue, 0, VT_BSTR);
|
||||
if(FAILED(hres))
|
||||
return hres;
|
||||
}
|
||||
}
|
||||
|
||||
return S_OK;
|
||||
return get_elem_attr_value_by_dispid(This, dispid, lFlags, AttributeValue);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLElement_removeAttribute(IHTMLElement *iface, BSTR strAttributeName,
|
||||
|
@ -679,7 +684,7 @@ static HRESULT WINAPI HTMLElement_removeAttribute(IHTMLElement *iface, BSTR strA
|
|||
|
||||
TRACE("(%p)->(%s %x %p)\n", This, debugstr_w(strAttributeName), lFlags, pfSuccess);
|
||||
|
||||
hres = IDispatchEx_GetDispID(&This->node.dispex.IDispatchEx_iface, strAttributeName,
|
||||
hres = IDispatchEx_GetDispID(&This->node.event_target.dispex.IDispatchEx_iface, strAttributeName,
|
||||
lFlags&ATTRFLAG_CASESENSITIVE ? fdexNameCaseSensitive : fdexNameCaseInsensitive, &id);
|
||||
if(hres == DISP_E_UNKNOWNNAME) {
|
||||
*pfSuccess = VARIANT_FALSE;
|
||||
|
@ -706,7 +711,7 @@ static HRESULT WINAPI HTMLElement_removeAttribute(IHTMLElement *iface, BSTR strA
|
|||
return S_OK;
|
||||
}
|
||||
|
||||
return remove_attribute(&This->node.dispex, id, pfSuccess);
|
||||
return remove_attribute(&This->node.event_target.dispex, id, pfSuccess);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLElement_put_className(IHTMLElement *iface, BSTR v)
|
||||
|
@ -1073,7 +1078,7 @@ static HRESULT WINAPI HTMLElement_put_title(IHTMLElement *iface, BSTR v)
|
|||
VARIANT *var;
|
||||
HRESULT hres;
|
||||
|
||||
hres = dispex_get_dprop_ref(&This->node.dispex, titleW, TRUE, &var);
|
||||
hres = dispex_get_dprop_ref(&This->node.event_target.dispex, titleW, TRUE, &var);
|
||||
if(FAILED(hres))
|
||||
return hres;
|
||||
|
||||
|
@ -1104,7 +1109,7 @@ static HRESULT WINAPI HTMLElement_get_title(IHTMLElement *iface, BSTR *p)
|
|||
VARIANT *var;
|
||||
HRESULT hres;
|
||||
|
||||
hres = dispex_get_dprop_ref(&This->node.dispex, titleW, FALSE, &var);
|
||||
hres = dispex_get_dprop_ref(&This->node.event_target.dispex, titleW, FALSE, &var);
|
||||
if(hres == DISP_E_UNKNOWNNAME) {
|
||||
*p = NULL;
|
||||
}else if(V_VT(var) != VT_BSTR) {
|
||||
|
@ -1488,7 +1493,7 @@ static HRESULT WINAPI HTMLElement_get_outerText(IHTMLElement *iface, BSTR *p)
|
|||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT insert_adjacent_node(HTMLElement *This, const WCHAR *where, nsIDOMNode *nsnode, HTMLDOMNode **ret_node)
|
||||
static HRESULT insert_adjacent_node(HTMLElement *This, const WCHAR *where, nsIDOMNode *nsnode, HTMLDOMNode **ret_node)
|
||||
{
|
||||
nsIDOMNode *ret_nsnode;
|
||||
nsresult nsres;
|
||||
|
@ -1986,14 +1991,14 @@ static ULONG WINAPI HTMLElement2_Release(IHTMLElement2 *iface)
|
|||
static HRESULT WINAPI HTMLElement2_GetTypeInfoCount(IHTMLElement2 *iface, UINT *pctinfo)
|
||||
{
|
||||
HTMLElement *This = impl_from_IHTMLElement2(iface);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->node.dispex.IDispatchEx_iface, pctinfo);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->node.event_target.dispex.IDispatchEx_iface, pctinfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLElement2_GetTypeInfo(IHTMLElement2 *iface, UINT iTInfo,
|
||||
LCID lcid, ITypeInfo **ppTInfo)
|
||||
{
|
||||
HTMLElement *This = impl_from_IHTMLElement2(iface);
|
||||
return IDispatchEx_GetTypeInfo(&This->node.dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
|
||||
return IDispatchEx_GetTypeInfo(&This->node.event_target.dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLElement2_GetIDsOfNames(IHTMLElement2 *iface, REFIID riid,
|
||||
|
@ -2001,7 +2006,7 @@ static HRESULT WINAPI HTMLElement2_GetIDsOfNames(IHTMLElement2 *iface, REFIID ri
|
|||
LCID lcid, DISPID *rgDispId)
|
||||
{
|
||||
HTMLElement *This = impl_from_IHTMLElement2(iface);
|
||||
return IDispatchEx_GetIDsOfNames(&This->node.dispex.IDispatchEx_iface, riid, rgszNames, cNames,
|
||||
return IDispatchEx_GetIDsOfNames(&This->node.event_target.dispex.IDispatchEx_iface, riid, rgszNames, cNames,
|
||||
lcid, rgDispId);
|
||||
}
|
||||
|
||||
|
@ -2010,7 +2015,7 @@ static HRESULT WINAPI HTMLElement2_Invoke(IHTMLElement2 *iface, DISPID dispIdMem
|
|||
VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
|
||||
{
|
||||
HTMLElement *This = impl_from_IHTMLElement2(iface);
|
||||
return IDispatchEx_Invoke(&This->node.dispex.IDispatchEx_iface, dispIdMember, riid, lcid,
|
||||
return IDispatchEx_Invoke(&This->node.event_target.dispex.IDispatchEx_iface, dispIdMember, riid, lcid,
|
||||
wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
|
||||
}
|
||||
|
||||
|
@ -2543,7 +2548,7 @@ static HRESULT WINAPI HTMLElement2_attachEvent(IHTMLElement2 *iface, BSTR event,
|
|||
|
||||
TRACE("(%p)->(%s %p %p)\n", This, debugstr_w(event), pDisp, pfResult);
|
||||
|
||||
return attach_event(get_node_event_target(&This->node), &This->node.doc->basedoc, event, pDisp, pfResult);
|
||||
return attach_event(&This->node.event_target, event, pDisp, pfResult);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLElement2_detachEvent(IHTMLElement2 *iface, BSTR event, IDispatch *pDisp)
|
||||
|
@ -2552,7 +2557,7 @@ static HRESULT WINAPI HTMLElement2_detachEvent(IHTMLElement2 *iface, BSTR event,
|
|||
|
||||
TRACE("(%p)->(%s %p)\n", This, debugstr_w(event), pDisp);
|
||||
|
||||
return detach_event(*get_node_event_target(&This->node), &This->node.doc->basedoc, event, pDisp);
|
||||
return detach_event(&This->node.event_target, event, pDisp);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLElement2_get_readyState(IHTMLElement2 *iface, VARIANT *p)
|
||||
|
@ -3104,14 +3109,14 @@ static ULONG WINAPI HTMLElement3_Release(IHTMLElement3 *iface)
|
|||
static HRESULT WINAPI HTMLElement3_GetTypeInfoCount(IHTMLElement3 *iface, UINT *pctinfo)
|
||||
{
|
||||
HTMLElement *This = impl_from_IHTMLElement3(iface);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->node.dispex.IDispatchEx_iface, pctinfo);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->node.event_target.dispex.IDispatchEx_iface, pctinfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLElement3_GetTypeInfo(IHTMLElement3 *iface, UINT iTInfo,
|
||||
LCID lcid, ITypeInfo **ppTInfo)
|
||||
{
|
||||
HTMLElement *This = impl_from_IHTMLElement3(iface);
|
||||
return IDispatchEx_GetTypeInfo(&This->node.dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
|
||||
return IDispatchEx_GetTypeInfo(&This->node.event_target.dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLElement3_GetIDsOfNames(IHTMLElement3 *iface, REFIID riid,
|
||||
|
@ -3119,7 +3124,7 @@ static HRESULT WINAPI HTMLElement3_GetIDsOfNames(IHTMLElement3 *iface, REFIID ri
|
|||
LCID lcid, DISPID *rgDispId)
|
||||
{
|
||||
HTMLElement *This = impl_from_IHTMLElement3(iface);
|
||||
return IDispatchEx_GetIDsOfNames(&This->node.dispex.IDispatchEx_iface, riid, rgszNames, cNames,
|
||||
return IDispatchEx_GetIDsOfNames(&This->node.event_target.dispex.IDispatchEx_iface, riid, rgszNames, cNames,
|
||||
lcid, rgDispId);
|
||||
}
|
||||
|
||||
|
@ -3128,7 +3133,7 @@ static HRESULT WINAPI HTMLElement3_Invoke(IHTMLElement3 *iface, DISPID dispIdMem
|
|||
VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
|
||||
{
|
||||
HTMLElement *This = impl_from_IHTMLElement3(iface);
|
||||
return IDispatchEx_Invoke(&This->node.dispex.IDispatchEx_iface, dispIdMember, riid, lcid,
|
||||
return IDispatchEx_Invoke(&This->node.event_target.dispex.IDispatchEx_iface, dispIdMember, riid, lcid,
|
||||
wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
|
||||
}
|
||||
|
||||
|
@ -3283,7 +3288,7 @@ static HRESULT WINAPI HTMLElement3_put_disabled(IHTMLElement3 *iface, VARIANT_BO
|
|||
if(This->node.vtbl->put_disabled)
|
||||
return This->node.vtbl->put_disabled(&This->node, v);
|
||||
|
||||
hres = dispex_get_dprop_ref(&This->node.dispex, disabledW, TRUE, &var);
|
||||
hres = dispex_get_dprop_ref(&This->node.event_target.dispex, disabledW, TRUE, &var);
|
||||
if(FAILED(hres))
|
||||
return hres;
|
||||
|
||||
|
@ -3304,7 +3309,7 @@ static HRESULT WINAPI HTMLElement3_get_disabled(IHTMLElement3 *iface, VARIANT_BO
|
|||
if(This->node.vtbl->get_disabled)
|
||||
return This->node.vtbl->get_disabled(&This->node, p);
|
||||
|
||||
hres = dispex_get_dprop_ref(&This->node.dispex, disabledW, FALSE, &var);
|
||||
hres = dispex_get_dprop_ref(&This->node.event_target.dispex, disabledW, FALSE, &var);
|
||||
if(hres == DISP_E_UNKNOWNNAME) {
|
||||
*p = VARIANT_FALSE;
|
||||
return S_OK;
|
||||
|
@ -3573,21 +3578,21 @@ static ULONG WINAPI HTMLElement4_Release(IHTMLElement4 *iface)
|
|||
static HRESULT WINAPI HTMLElement4_GetTypeInfoCount(IHTMLElement4 *iface, UINT *pctinfo)
|
||||
{
|
||||
HTMLElement *This = impl_from_IHTMLElement4(iface);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->node.dispex.IDispatchEx_iface, pctinfo);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->node.event_target.dispex.IDispatchEx_iface, pctinfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLElement4_GetTypeInfo(IHTMLElement4 *iface, UINT iTInfo,
|
||||
LCID lcid, ITypeInfo **ppTInfo)
|
||||
{
|
||||
HTMLElement *This = impl_from_IHTMLElement4(iface);
|
||||
return IDispatchEx_GetTypeInfo(&This->node.dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
|
||||
return IDispatchEx_GetTypeInfo(&This->node.event_target.dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLElement4_GetIDsOfNames(IHTMLElement4 *iface, REFIID riid,
|
||||
LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
|
||||
{
|
||||
HTMLElement *This = impl_from_IHTMLElement4(iface);
|
||||
return IDispatchEx_GetIDsOfNames(&This->node.dispex.IDispatchEx_iface, riid, rgszNames, cNames,
|
||||
return IDispatchEx_GetIDsOfNames(&This->node.event_target.dispex.IDispatchEx_iface, riid, rgszNames, cNames,
|
||||
lcid, rgDispId);
|
||||
}
|
||||
|
||||
|
@ -3595,7 +3600,7 @@ static HRESULT WINAPI HTMLElement4_Invoke(IHTMLElement4 *iface, DISPID dispIdMem
|
|||
LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
|
||||
{
|
||||
HTMLElement *This = impl_from_IHTMLElement4(iface);
|
||||
return IDispatchEx_Invoke(&This->node.dispex.IDispatchEx_iface, dispIdMember, riid, lcid,
|
||||
return IDispatchEx_Invoke(&This->node.event_target.dispex.IDispatchEx_iface, dispIdMember, riid, lcid,
|
||||
wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
|
||||
}
|
||||
|
||||
|
@ -3855,7 +3860,7 @@ static const NodeImplVtbl HTMLElementImplVtbl = {
|
|||
|
||||
static inline HTMLElement *impl_from_DispatchEx(DispatchEx *iface)
|
||||
{
|
||||
return CONTAINING_RECORD(iface, HTMLElement, node.dispex);
|
||||
return CONTAINING_RECORD(iface, HTMLElement, node.event_target.dispex);
|
||||
}
|
||||
|
||||
static HRESULT HTMLElement_get_dispid(DispatchEx *dispex, BSTR name,
|
||||
|
@ -3965,6 +3970,20 @@ static HRESULT HTMLElement_populate_props(DispatchEx *dispex)
|
|||
return S_OK;
|
||||
}
|
||||
|
||||
static event_target_t **HTMLElement_get_event_target_ptr(DispatchEx *dispex)
|
||||
{
|
||||
HTMLElement *This = impl_from_DispatchEx(dispex);
|
||||
return This->node.vtbl->get_event_target_ptr
|
||||
? This->node.vtbl->get_event_target_ptr(&This->node)
|
||||
: &This->node.event_target.ptr;
|
||||
}
|
||||
|
||||
static void HTMLElement_bind_event(DispatchEx *dispex, int eid)
|
||||
{
|
||||
HTMLElement *This = impl_from_DispatchEx(dispex);
|
||||
This->node.doc->node.event_target.dispex.data->vtbl->bind_event(&This->node.doc->node.event_target.dispex, eid);
|
||||
}
|
||||
|
||||
static const tid_t HTMLElement_iface_tids[] = {
|
||||
HTMLELEMENT_TIDS,
|
||||
0
|
||||
|
@ -3974,7 +3993,9 @@ static dispex_static_data_vtbl_t HTMLElement_dispex_vtbl = {
|
|||
NULL,
|
||||
HTMLElement_get_dispid,
|
||||
HTMLElement_invoke,
|
||||
HTMLElement_populate_props
|
||||
HTMLElement_populate_props,
|
||||
HTMLElement_get_event_target_ptr,
|
||||
HTMLElement_bind_event
|
||||
};
|
||||
|
||||
static dispex_static_data_t HTMLElement_dispex = {
|
||||
|
@ -3993,7 +4014,7 @@ void HTMLElement_Init(HTMLElement *This, HTMLDocumentNode *doc, nsIDOMHTMLElemen
|
|||
|
||||
if(dispex_data && !dispex_data->vtbl)
|
||||
dispex_data->vtbl = &HTMLElement_dispex_vtbl;
|
||||
init_dispex(&This->node.dispex, (IUnknown*)&This->IHTMLElement_iface,
|
||||
init_dispex(&This->node.event_target.dispex, (IUnknown*)&This->IHTMLElement_iface,
|
||||
dispex_data ? dispex_data : &HTMLElement_dispex);
|
||||
|
||||
if(nselem) {
|
||||
|
@ -4342,7 +4363,7 @@ static HRESULT WINAPI HTMLAttributeCollection_Invoke(IHTMLAttributeCollection *i
|
|||
|
||||
static HRESULT get_attr_dispid_by_idx(HTMLAttributeCollection *This, LONG *idx, DISPID *dispid)
|
||||
{
|
||||
IDispatchEx *dispex = &This->elem->node.dispex.IDispatchEx_iface;
|
||||
IDispatchEx *dispex = &This->elem->node.event_target.dispex.IDispatchEx_iface;
|
||||
DISPID id = DISPID_STARTENUM;
|
||||
LONG len = -1;
|
||||
HRESULT hres;
|
||||
|
@ -4391,7 +4412,7 @@ static inline HRESULT get_attr_dispid_by_name(HTMLAttributeCollection *This, BST
|
|||
return E_UNEXPECTED;
|
||||
}
|
||||
|
||||
hres = IDispatchEx_GetDispID(&This->elem->node.dispex.IDispatchEx_iface,
|
||||
hres = IDispatchEx_GetDispID(&This->elem->node.event_target.dispex.IDispatchEx_iface,
|
||||
name, fdexNameCaseInsensitive, id);
|
||||
return hres;
|
||||
}
|
||||
|
|
|
@ -405,11 +405,13 @@ static HRESULT WINAPI HTMLElementCollection_item(IHTMLElementCollection *iface,
|
|||
|
||||
switch(V_VT(&name)) {
|
||||
case VT_I4:
|
||||
case VT_INT:
|
||||
if(V_I4(&name) < 0)
|
||||
return E_INVALIDARG;
|
||||
hres = get_item_idx(This, V_I4(&name), pdisp);
|
||||
break;
|
||||
|
||||
case VT_UI4:
|
||||
case VT_UINT:
|
||||
hres = get_item_idx(This, V_UINT(&name), pdisp);
|
||||
break;
|
||||
|
@ -808,6 +810,9 @@ static IHTMLElementCollection *HTMLElementCollection_Create(HTMLElement **elems,
|
|||
{
|
||||
HTMLElementCollection *ret = heap_alloc_zero(sizeof(HTMLElementCollection));
|
||||
|
||||
if (!ret)
|
||||
return NULL;
|
||||
|
||||
ret->IHTMLElementCollection_iface.lpVtbl = &HTMLElementCollectionVtbl;
|
||||
ret->ref = 1;
|
||||
ret->elems = elems;
|
||||
|
|
|
@ -54,14 +54,14 @@ static ULONG WINAPI HTMLEmbedElement_Release(IHTMLEmbedElement *iface)
|
|||
static HRESULT WINAPI HTMLEmbedElement_GetTypeInfoCount(IHTMLEmbedElement *iface, UINT *pctinfo)
|
||||
{
|
||||
HTMLEmbedElement *This = impl_from_IHTMLEmbedElement(iface);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.dispex.IDispatchEx_iface, pctinfo);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.event_target.dispex.IDispatchEx_iface, pctinfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLEmbedElement_GetTypeInfo(IHTMLEmbedElement *iface, UINT iTInfo,
|
||||
LCID lcid, ITypeInfo **ppTInfo)
|
||||
{
|
||||
HTMLEmbedElement *This = impl_from_IHTMLEmbedElement(iface);
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.dispex.IDispatchEx_iface, iTInfo, lcid,
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.event_target.dispex.IDispatchEx_iface, iTInfo, lcid,
|
||||
ppTInfo);
|
||||
}
|
||||
|
||||
|
@ -69,7 +69,7 @@ static HRESULT WINAPI HTMLEmbedElement_GetIDsOfNames(IHTMLEmbedElement *iface, R
|
|||
LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
|
||||
{
|
||||
HTMLEmbedElement *This = impl_from_IHTMLEmbedElement(iface);
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.event_target.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
cNames, lcid, rgDispId);
|
||||
}
|
||||
|
||||
|
@ -78,7 +78,7 @@ static HRESULT WINAPI HTMLEmbedElement_Invoke(IHTMLEmbedElement *iface, DISPID d
|
|||
VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
|
||||
{
|
||||
HTMLEmbedElement *This = impl_from_IHTMLEmbedElement(iface);
|
||||
return IDispatchEx_Invoke(&This->element.node.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
return IDispatchEx_Invoke(&This->element.node.event_target.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
|
||||
}
|
||||
|
||||
|
@ -213,14 +213,13 @@ static HRESULT HTMLEmbedElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv)
|
|||
{
|
||||
HTMLEmbedElement *This = impl_from_HTMLDOMNode(iface);
|
||||
|
||||
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
|
||||
|
||||
if(IsEqualGUID(&IID_IUnknown, riid)) {
|
||||
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
|
||||
*ppv = &This->IHTMLEmbedElement_iface;
|
||||
}else if(IsEqualGUID(&IID_IDispatch, riid)) {
|
||||
TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv);
|
||||
*ppv = &This->IHTMLEmbedElement_iface;
|
||||
}else if(IsEqualGUID(&IID_IHTMLEmbedElement, riid)) {
|
||||
TRACE("(%p)->(IID_IHTMLEmbedElement %p)\n", This, ppv);
|
||||
*ppv = &This->IHTMLEmbedElement_iface;
|
||||
}else {
|
||||
return HTMLElement_QI(&This->element.node, riid, ppv);
|
||||
|
|
|
@ -239,7 +239,7 @@ static eventid_t attr_to_eid(LPCWSTR str)
|
|||
return EVENTID_LAST;
|
||||
}
|
||||
|
||||
typedef struct {
|
||||
struct HTMLEventObj {
|
||||
DispatchEx dispex;
|
||||
IHTMLEventObj IHTMLEventObj_iface;
|
||||
|
||||
|
@ -248,9 +248,10 @@ typedef struct {
|
|||
HTMLDOMNode *target;
|
||||
const event_info_t *type;
|
||||
nsIDOMEvent *nsevent;
|
||||
VARIANT return_value;
|
||||
BOOL prevent_default;
|
||||
BOOL cancel_bubble;
|
||||
} HTMLEventObj;
|
||||
};
|
||||
|
||||
static inline HTMLEventObj *impl_from_IHTMLEventObj(IHTMLEventObj *iface)
|
||||
{
|
||||
|
@ -452,6 +453,7 @@ static HRESULT WINAPI HTMLEventObj_put_returnValue(IHTMLEventObj *iface, VARIANT
|
|||
return DISP_E_BADVARTYPE;
|
||||
}
|
||||
|
||||
This->return_value = v;
|
||||
if(!V_BOOL(&v))
|
||||
This->prevent_default = TRUE;
|
||||
return S_OK;
|
||||
|
@ -461,10 +463,10 @@ static HRESULT WINAPI HTMLEventObj_get_returnValue(IHTMLEventObj *iface, VARIANT
|
|||
{
|
||||
HTMLEventObj *This = impl_from_IHTMLEventObj(iface);
|
||||
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
TRACE("(%p)->(%p)\n", This, p);
|
||||
|
||||
V_VT(p) = VT_EMPTY;
|
||||
return S_OK;
|
||||
return VariantCopy(p, &This->return_value);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLEventObj_put_cancelBubble(IHTMLEventObj *iface, VARIANT_BOOL v)
|
||||
|
@ -865,6 +867,19 @@ HRESULT create_event_obj(IHTMLEventObj **ret)
|
|||
return S_OK;
|
||||
}
|
||||
|
||||
static inline event_target_t *get_event_target_data(EventTarget *event_target, BOOL alloc)
|
||||
{
|
||||
event_target_t **ptr;
|
||||
|
||||
ptr = event_target->dispex.data->vtbl && event_target->dispex.data->vtbl->get_event_target_ptr
|
||||
? event_target->dispex.data->vtbl->get_event_target_ptr(&event_target->dispex)
|
||||
: &event_target->ptr;
|
||||
if(*ptr || !alloc)
|
||||
return *ptr;
|
||||
|
||||
return *ptr = heap_alloc_zero(sizeof(event_target_t));
|
||||
}
|
||||
|
||||
static HRESULT call_disp_func(IDispatch *disp, DISPPARAMS *dp, VARIANT *retv)
|
||||
{
|
||||
IDispatchEx *dispex;
|
||||
|
@ -934,18 +949,15 @@ static BOOL is_cp_event(cp_static_data_t *data, DISPID dispid)
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
static void call_event_handlers(HTMLDocumentNode *doc, HTMLEventObj *event_obj, event_target_t *event_target,
|
||||
void call_event_handlers(HTMLDocumentNode *doc, HTMLEventObj *event_obj, EventTarget *event_target,
|
||||
ConnectionPointContainer *cp_container, eventid_t eid, IDispatch *this_obj)
|
||||
{
|
||||
event_target_t *data = get_event_target_data(event_target, FALSE);
|
||||
const BOOL cancelable = event_info[eid].flags & EVENT_CANCELABLE;
|
||||
handler_vector_t *handler_vector = NULL;
|
||||
VARIANT v;
|
||||
HRESULT hres;
|
||||
|
||||
if(event_target)
|
||||
handler_vector = event_target->event_table[eid];
|
||||
|
||||
if(handler_vector && handler_vector->handler_prop) {
|
||||
if(data && data->event_table[eid] && data->event_table[eid]->handler_prop) {
|
||||
DISPID named_arg = DISPID_THIS;
|
||||
VARIANTARG arg;
|
||||
DISPPARAMS dp = {&arg, &named_arg, 1, 1};
|
||||
|
@ -955,7 +967,7 @@ static void call_event_handlers(HTMLDocumentNode *doc, HTMLEventObj *event_obj,
|
|||
V_VT(&v) = VT_EMPTY;
|
||||
|
||||
TRACE("%s >>>\n", debugstr_w(event_info[eid].name));
|
||||
hres = call_disp_func(handler_vector->handler_prop, &dp, &v);
|
||||
hres = call_disp_func(data->event_table[eid]->handler_prop, &dp, &v);
|
||||
if(hres == S_OK) {
|
||||
TRACE("%s <<< %s\n", debugstr_w(event_info[eid].name), debugstr_variant(&v));
|
||||
|
||||
|
@ -973,7 +985,7 @@ static void call_event_handlers(HTMLDocumentNode *doc, HTMLEventObj *event_obj,
|
|||
}
|
||||
}
|
||||
|
||||
if(handler_vector && handler_vector->handler_cnt) {
|
||||
if(data && data->event_table[eid] && data->event_table[eid]->handler_cnt) {
|
||||
VARIANTARG arg;
|
||||
DISPPARAMS dp = {&arg, NULL, 1, 0};
|
||||
int i;
|
||||
|
@ -981,13 +993,13 @@ static void call_event_handlers(HTMLDocumentNode *doc, HTMLEventObj *event_obj,
|
|||
V_VT(&arg) = VT_DISPATCH;
|
||||
V_DISPATCH(&arg) = (IDispatch*)event_obj;
|
||||
|
||||
i = handler_vector->handler_cnt;
|
||||
i = data->event_table[eid]->handler_cnt;
|
||||
while(i--) {
|
||||
if(handler_vector->handlers[i]) {
|
||||
if(data->event_table[eid]->handlers[i]) {
|
||||
V_VT(&v) = VT_EMPTY;
|
||||
|
||||
TRACE("%s [%d] >>>\n", debugstr_w(event_info[eid].name), i);
|
||||
hres = call_disp_func(handler_vector->handlers[i], &dp, &v);
|
||||
hres = call_disp_func(data->event_table[eid]->handlers[i], &dp, &v);
|
||||
if(hres == S_OK) {
|
||||
TRACE("%s [%d] <<<\n", debugstr_w(event_info[eid].name), i);
|
||||
|
||||
|
@ -1089,8 +1101,8 @@ static void fire_event_obj(HTMLDocumentNode *doc, eventid_t eid, HTMLEventObj *e
|
|||
do {
|
||||
hres = get_node(doc, nsnode, FALSE, &node);
|
||||
if(SUCCEEDED(hres) && node) {
|
||||
call_event_handlers(doc, event_obj, *get_node_event_target(node),
|
||||
node->cp_container, eid, script_this ? script_this : (IDispatch*)&node->IHTMLDOMNode_iface);
|
||||
call_event_handlers(doc, event_obj, &node->event_target, node->cp_container, eid,
|
||||
script_this ? script_this : (IDispatch*)&node->IHTMLDOMNode_iface);
|
||||
node_release(node);
|
||||
}
|
||||
|
||||
|
@ -1118,8 +1130,8 @@ static void fire_event_obj(HTMLDocumentNode *doc, eventid_t eid, HTMLEventObj *e
|
|||
if(NS_SUCCEEDED(nsres) && nsbody) {
|
||||
hres = get_node(doc, (nsIDOMNode*)nsbody, FALSE, &node);
|
||||
if(SUCCEEDED(hres) && node) {
|
||||
call_event_handlers(doc, event_obj, *get_node_event_target(node),
|
||||
node->cp_container, eid, script_this ? script_this : (IDispatch*)&node->IHTMLDOMNode_iface);
|
||||
call_event_handlers(doc, event_obj, &node->event_target, node->cp_container, eid,
|
||||
script_this ? script_this : (IDispatch*)&node->IHTMLDOMNode_iface);
|
||||
node_release(node);
|
||||
}
|
||||
nsIDOMHTMLElement_Release(nsbody);
|
||||
|
@ -1128,7 +1140,7 @@ static void fire_event_obj(HTMLDocumentNode *doc, eventid_t eid, HTMLEventObj *e
|
|||
}
|
||||
}
|
||||
|
||||
call_event_handlers(doc, event_obj, doc->node.event_target, &doc->basedoc.cp_container, eid,
|
||||
call_event_handlers(doc, event_obj, &doc->node.event_target, &doc->basedoc.cp_container, eid,
|
||||
script_this ? script_this : (IDispatch*)&doc->basedoc.IHTMLDocument2_iface);
|
||||
break;
|
||||
|
||||
|
@ -1283,13 +1295,6 @@ HRESULT call_fire_event(HTMLDOMNode *node, eventid_t eid)
|
|||
return S_OK;
|
||||
}
|
||||
|
||||
static inline event_target_t *get_event_target(event_target_t **event_target_ptr)
|
||||
{
|
||||
if(!*event_target_ptr)
|
||||
*event_target_ptr = heap_alloc_zero(sizeof(event_target_t));
|
||||
return *event_target_ptr;
|
||||
}
|
||||
|
||||
static BOOL alloc_handler_vector(event_target_t *event_target, eventid_t eid, int cnt)
|
||||
{
|
||||
handler_vector_t *new_vector, *handler_vector = event_target->event_table[eid];
|
||||
|
@ -1311,7 +1316,7 @@ static BOOL alloc_handler_vector(event_target_t *event_target, eventid_t eid, in
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
static HRESULT ensure_nsevent_handler(HTMLDocumentNode *doc, event_target_t *event_target, eventid_t eid)
|
||||
HRESULT ensure_doc_nsevent_handler(HTMLDocumentNode *doc, eventid_t eid)
|
||||
{
|
||||
nsIDOMNode *nsnode = NULL;
|
||||
|
||||
|
@ -1349,49 +1354,85 @@ void detach_events(HTMLDocumentNode *doc)
|
|||
release_nsevents(doc);
|
||||
}
|
||||
|
||||
|
||||
static HRESULT remove_event_handler(event_target_t **event_target, eventid_t eid)
|
||||
static void bind_event(EventTarget *event_target, eventid_t eid)
|
||||
{
|
||||
if(*event_target && (*event_target)->event_table[eid] && (*event_target)->event_table[eid]->handler_prop) {
|
||||
IDispatch_Release((*event_target)->event_table[eid]->handler_prop);
|
||||
(*event_target)->event_table[eid]->handler_prop = NULL;
|
||||
}
|
||||
if(event_target->dispex.data->vtbl->bind_event)
|
||||
event_target->dispex.data->vtbl->bind_event(&event_target->dispex, eid);
|
||||
else
|
||||
FIXME("Unsupported event binding on target %p\n", event_target);
|
||||
}
|
||||
|
||||
static void remove_event_handler(EventTarget *event_target, eventid_t eid)
|
||||
{
|
||||
event_target_t *data;
|
||||
VARIANT *store;
|
||||
HRESULT hres;
|
||||
|
||||
hres = dispex_get_dprop_ref(&event_target->dispex, event_info[eid].attr_name, FALSE, &store);
|
||||
if(SUCCEEDED(hres))
|
||||
VariantClear(store);
|
||||
|
||||
data = get_event_target_data(event_target, FALSE);
|
||||
if(data && data->event_table[eid] && data->event_table[eid]->handler_prop) {
|
||||
IDispatch_Release(data->event_table[eid]->handler_prop);
|
||||
data->event_table[eid]->handler_prop = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static HRESULT set_event_handler_disp(EventTarget *event_target, eventid_t eid, IDispatch *disp)
|
||||
{
|
||||
event_target_t *data;
|
||||
|
||||
remove_event_handler(event_target, eid);
|
||||
if(!disp)
|
||||
return S_OK;
|
||||
|
||||
data = get_event_target_data(event_target, TRUE);
|
||||
if(!data)
|
||||
return E_OUTOFMEMORY;
|
||||
|
||||
if(!alloc_handler_vector(data, eid, 0))
|
||||
return E_OUTOFMEMORY;
|
||||
|
||||
data->event_table[eid]->handler_prop = disp;
|
||||
IDispatch_AddRef(disp);
|
||||
|
||||
bind_event(event_target, eid);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT set_event_handler_disp(event_target_t **event_target_ptr, HTMLDocumentNode *doc,
|
||||
eventid_t eid, IDispatch *disp)
|
||||
{
|
||||
event_target_t *event_target;
|
||||
|
||||
if(!disp)
|
||||
return remove_event_handler(event_target_ptr, eid);
|
||||
|
||||
event_target = get_event_target(event_target_ptr);
|
||||
if(!event_target)
|
||||
return E_OUTOFMEMORY;
|
||||
|
||||
if(!alloc_handler_vector(event_target, eid, 0))
|
||||
return E_OUTOFMEMORY;
|
||||
|
||||
if(event_target->event_table[eid]->handler_prop)
|
||||
IDispatch_Release(event_target->event_table[eid]->handler_prop);
|
||||
|
||||
event_target->event_table[eid]->handler_prop = disp;
|
||||
IDispatch_AddRef(disp);
|
||||
|
||||
return ensure_nsevent_handler(doc, event_target, eid);
|
||||
}
|
||||
|
||||
HRESULT set_event_handler(event_target_t **event_target, HTMLDocumentNode *doc, eventid_t eid, VARIANT *var)
|
||||
HRESULT set_event_handler(EventTarget *event_target, eventid_t eid, VARIANT *var)
|
||||
{
|
||||
switch(V_VT(var)) {
|
||||
case VT_NULL:
|
||||
return remove_event_handler(event_target, eid);
|
||||
remove_event_handler(event_target, eid);
|
||||
return S_OK;
|
||||
|
||||
case VT_DISPATCH:
|
||||
return set_event_handler_disp(event_target, doc, eid, V_DISPATCH(var));
|
||||
return set_event_handler_disp(event_target, eid, V_DISPATCH(var));
|
||||
|
||||
case VT_BSTR: {
|
||||
VARIANT *v;
|
||||
HRESULT hres;
|
||||
|
||||
/*
|
||||
* Setting event handler to string is a rare case and we don't want to
|
||||
* complicate nor increase memory of event_target_t for that. Instead,
|
||||
* we store the value in DispatchEx, which can already handle custom
|
||||
* properties.
|
||||
*/
|
||||
remove_event_handler(event_target, eid);
|
||||
|
||||
hres = dispex_get_dprop_ref(&event_target->dispex, event_info[eid].attr_name, TRUE, &v);
|
||||
if(FAILED(hres))
|
||||
return hres;
|
||||
|
||||
V_BSTR(v) = SysAllocString(V_BSTR(var));
|
||||
if(!V_BSTR(v))
|
||||
return E_OUTOFMEMORY;
|
||||
V_VT(v) = VT_BSTR;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
default:
|
||||
FIXME("not handler %s\n", debugstr_variant(var));
|
||||
|
@ -1403,11 +1444,20 @@ HRESULT set_event_handler(event_target_t **event_target, HTMLDocumentNode *doc,
|
|||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT get_event_handler(event_target_t **event_target, eventid_t eid, VARIANT *var)
|
||||
HRESULT get_event_handler(EventTarget *event_target, eventid_t eid, VARIANT *var)
|
||||
{
|
||||
if(*event_target && (*event_target)->event_table[eid] && (*event_target)->event_table[eid]->handler_prop) {
|
||||
event_target_t *data;
|
||||
VARIANT *v;
|
||||
HRESULT hres;
|
||||
|
||||
hres = dispex_get_dprop_ref(&event_target->dispex, event_info[eid].attr_name, FALSE, &v);
|
||||
if(SUCCEEDED(hres) && V_VT(v) != VT_EMPTY)
|
||||
return VariantCopy(var, v);
|
||||
|
||||
data = get_event_target_data(event_target, FALSE);
|
||||
if(data && data->event_table[eid] && data->event_table[eid]->handler_prop) {
|
||||
V_VT(var) = VT_DISPATCH;
|
||||
V_DISPATCH(var) = (*event_target)->event_table[eid]->handler_prop;
|
||||
V_DISPATCH(var) = data->event_table[eid]->handler_prop;
|
||||
IDispatch_AddRef(V_DISPATCH(var));
|
||||
}else {
|
||||
V_VT(var) = VT_NULL;
|
||||
|
@ -1416,10 +1466,9 @@ HRESULT get_event_handler(event_target_t **event_target, eventid_t eid, VARIANT
|
|||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT attach_event(event_target_t **event_target_ptr, HTMLDocument *doc, BSTR name,
|
||||
IDispatch *disp, VARIANT_BOOL *res)
|
||||
HRESULT attach_event(EventTarget *event_target, BSTR name, IDispatch *disp, VARIANT_BOOL *res)
|
||||
{
|
||||
event_target_t *event_target;
|
||||
event_target_t *data;
|
||||
eventid_t eid;
|
||||
DWORD i = 0;
|
||||
|
||||
|
@ -1430,47 +1479,51 @@ HRESULT attach_event(event_target_t **event_target_ptr, HTMLDocument *doc, BSTR
|
|||
return S_OK;
|
||||
}
|
||||
|
||||
event_target = get_event_target(event_target_ptr);
|
||||
if(!event_target)
|
||||
data = get_event_target_data(event_target, TRUE);
|
||||
if(!data)
|
||||
return E_OUTOFMEMORY;
|
||||
|
||||
if(event_target->event_table[eid]) {
|
||||
while(i < event_target->event_table[eid]->handler_cnt && event_target->event_table[eid]->handlers[i])
|
||||
if(data->event_table[eid]) {
|
||||
while(i < data->event_table[eid]->handler_cnt && data->event_table[eid]->handlers[i])
|
||||
i++;
|
||||
if(i == event_target->event_table[eid]->handler_cnt && !alloc_handler_vector(event_target, eid, i+1))
|
||||
if(i == data->event_table[eid]->handler_cnt && !alloc_handler_vector(data, eid, i+1))
|
||||
return E_OUTOFMEMORY;
|
||||
}else if(!alloc_handler_vector(event_target, eid, i+1)) {
|
||||
}else if(!alloc_handler_vector(data, eid, i+1)) {
|
||||
return E_OUTOFMEMORY;
|
||||
}
|
||||
|
||||
IDispatch_AddRef(disp);
|
||||
event_target->event_table[eid]->handlers[i] = disp;
|
||||
data->event_table[eid]->handlers[i] = disp;
|
||||
|
||||
bind_event(event_target, eid);
|
||||
|
||||
*res = VARIANT_TRUE;
|
||||
return ensure_nsevent_handler(doc->doc_node, event_target, eid);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT detach_event(event_target_t *event_target, HTMLDocument *doc, BSTR name, IDispatch *disp)
|
||||
HRESULT detach_event(EventTarget *event_target, BSTR name, IDispatch *disp)
|
||||
{
|
||||
event_target_t *data;
|
||||
eventid_t eid;
|
||||
DWORD i = 0;
|
||||
|
||||
if(!event_target)
|
||||
return S_OK;
|
||||
|
||||
eid = attr_to_eid(name);
|
||||
if(eid == EVENTID_LAST) {
|
||||
WARN("Unknown event\n");
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
if(!event_target->event_table[eid])
|
||||
data = get_event_target_data(event_target, FALSE);
|
||||
if(!data)
|
||||
return S_OK;
|
||||
|
||||
while(i < event_target->event_table[eid]->handler_cnt) {
|
||||
if(event_target->event_table[eid]->handlers[i] == disp) {
|
||||
IDispatch_Release(event_target->event_table[eid]->handlers[i]);
|
||||
event_target->event_table[eid]->handlers[i] = NULL;
|
||||
if(!data->event_table[eid])
|
||||
return S_OK;
|
||||
|
||||
while(i < data->event_table[eid]->handler_cnt) {
|
||||
if(data->event_table[eid]->handlers[i] == disp) {
|
||||
IDispatch_Release(data->event_table[eid]->handlers[i]);
|
||||
data->event_table[eid]->handlers[i] = NULL;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
|
@ -1478,11 +1531,11 @@ HRESULT detach_event(event_target_t *event_target, HTMLDocument *doc, BSTR name,
|
|||
return S_OK;
|
||||
}
|
||||
|
||||
void bind_node_event(HTMLDocumentNode *doc, event_target_t **event_target, HTMLDOMNode *node, const WCHAR *event, IDispatch *disp)
|
||||
void bind_target_event(HTMLDocumentNode *doc, EventTarget *event_target, const WCHAR *event, IDispatch *disp)
|
||||
{
|
||||
eventid_t eid;
|
||||
|
||||
TRACE("(%p %p %p %s %p)\n", doc, event_target, node, debugstr_w(event), disp);
|
||||
TRACE("(%p %p %s %p)\n", doc, event_target, debugstr_w(event), disp);
|
||||
|
||||
eid = attr_to_eid(event);
|
||||
if(eid == EVENTID_LAST) {
|
||||
|
@ -1490,21 +1543,16 @@ void bind_node_event(HTMLDocumentNode *doc, event_target_t **event_target, HTMLD
|
|||
return;
|
||||
}
|
||||
|
||||
set_event_handler_disp(event_target, doc, eid, disp);
|
||||
set_event_handler_disp(event_target, eid, disp);
|
||||
}
|
||||
|
||||
void update_cp_events(HTMLInnerWindow *window, event_target_t **event_target_ptr, cp_static_data_t *cp)
|
||||
void update_doc_cp_events(HTMLDocumentNode *doc, cp_static_data_t *cp)
|
||||
{
|
||||
event_target_t *event_target;
|
||||
int i;
|
||||
|
||||
event_target = get_event_target(event_target_ptr);
|
||||
if(!event_target)
|
||||
return; /* FIXME */
|
||||
|
||||
for(i=0; i < EVENTID_LAST; i++) {
|
||||
if((event_info[i].flags & EVENT_DEFAULTLISTENER) && is_cp_event(cp, event_info[i].dispid))
|
||||
ensure_nsevent_handler(window->doc, event_target, i);
|
||||
ensure_doc_nsevent_handler(doc, i);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1530,7 +1578,7 @@ void check_event_attr(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem)
|
|||
if(disp) {
|
||||
hres = get_node(doc, (nsIDOMNode*)nselem, TRUE, &node);
|
||||
if(SUCCEEDED(hres)) {
|
||||
set_event_handler_disp(get_node_event_target(node), node->doc, i, disp);
|
||||
set_event_handler_disp(&node->event_target, i, disp);
|
||||
node_release(node);
|
||||
}
|
||||
IDispatch_Release(disp);
|
||||
|
@ -1553,7 +1601,7 @@ HRESULT doc_init_events(HTMLDocumentNode *doc)
|
|||
|
||||
for(i=0; i < EVENTID_LAST; i++) {
|
||||
if(event_info[i].flags & EVENT_HASDEFAULTHANDLERS) {
|
||||
hres = ensure_nsevent_handler(doc, NULL, i);
|
||||
hres = ensure_doc_nsevent_handler(doc, i);
|
||||
if(FAILED(hres))
|
||||
return hres;
|
||||
}
|
||||
|
|
|
@ -56,36 +56,35 @@ eventid_t str_to_eid(LPCWSTR) DECLSPEC_HIDDEN;
|
|||
void check_event_attr(HTMLDocumentNode*,nsIDOMHTMLElement*) DECLSPEC_HIDDEN;
|
||||
void release_event_target(event_target_t*) DECLSPEC_HIDDEN;
|
||||
void fire_event(HTMLDocumentNode*,eventid_t,BOOL,nsIDOMNode*,nsIDOMEvent*,IDispatch*) DECLSPEC_HIDDEN;
|
||||
HRESULT set_event_handler(event_target_t**,HTMLDocumentNode*,eventid_t,VARIANT*) DECLSPEC_HIDDEN;
|
||||
HRESULT get_event_handler(event_target_t**,eventid_t,VARIANT*) DECLSPEC_HIDDEN;
|
||||
HRESULT attach_event(event_target_t**,HTMLDocument*,BSTR,IDispatch*,VARIANT_BOOL*) DECLSPEC_HIDDEN;
|
||||
HRESULT detach_event(event_target_t*,HTMLDocument*,BSTR,IDispatch*) DECLSPEC_HIDDEN;
|
||||
HRESULT set_event_handler(EventTarget*,eventid_t,VARIANT*) DECLSPEC_HIDDEN;
|
||||
HRESULT get_event_handler(EventTarget*,eventid_t,VARIANT*) DECLSPEC_HIDDEN;
|
||||
HRESULT attach_event(EventTarget*,BSTR,IDispatch*,VARIANT_BOOL*) DECLSPEC_HIDDEN;
|
||||
HRESULT detach_event(EventTarget*,BSTR,IDispatch*) DECLSPEC_HIDDEN;
|
||||
HRESULT dispatch_event(HTMLDOMNode*,const WCHAR*,VARIANT*,VARIANT_BOOL*) DECLSPEC_HIDDEN;
|
||||
HRESULT call_fire_event(HTMLDOMNode*,eventid_t) DECLSPEC_HIDDEN;
|
||||
void update_cp_events(HTMLInnerWindow*,event_target_t**,cp_static_data_t*) DECLSPEC_HIDDEN;
|
||||
void update_doc_cp_events(HTMLDocumentNode*,cp_static_data_t*) DECLSPEC_HIDDEN;
|
||||
HRESULT doc_init_events(HTMLDocumentNode*) DECLSPEC_HIDDEN;
|
||||
void detach_events(HTMLDocumentNode *doc) DECLSPEC_HIDDEN;
|
||||
HRESULT create_event_obj(IHTMLEventObj**) DECLSPEC_HIDDEN;
|
||||
void bind_node_event(HTMLDocumentNode*,event_target_t**,HTMLDOMNode*,const WCHAR*,IDispatch*) DECLSPEC_HIDDEN;
|
||||
void bind_target_event(HTMLDocumentNode*,EventTarget*,const WCHAR*,IDispatch*) DECLSPEC_HIDDEN;
|
||||
HRESULT ensure_doc_nsevent_handler(HTMLDocumentNode*,eventid_t) DECLSPEC_HIDDEN;
|
||||
|
||||
typedef struct HTMLEventObj HTMLEventObj;
|
||||
void call_event_handlers(HTMLDocumentNode*,HTMLEventObj*,EventTarget*,ConnectionPointContainer*,eventid_t,IDispatch*);
|
||||
|
||||
void init_nsevents(HTMLDocumentNode*) DECLSPEC_HIDDEN;
|
||||
void release_nsevents(HTMLDocumentNode*) DECLSPEC_HIDDEN;
|
||||
void add_nsevent_listener(HTMLDocumentNode*,nsIDOMNode*,LPCWSTR) DECLSPEC_HIDDEN;
|
||||
void detach_nsevent(HTMLDocumentNode*,const WCHAR*) DECLSPEC_HIDDEN;
|
||||
|
||||
static inline event_target_t **get_node_event_target(HTMLDOMNode *node)
|
||||
{
|
||||
return node->vtbl->get_event_target ? node->vtbl->get_event_target(node) : &node->event_target;
|
||||
}
|
||||
|
||||
static inline HRESULT set_node_event(HTMLDOMNode *node, eventid_t eid, VARIANT *var)
|
||||
{
|
||||
return set_event_handler(get_node_event_target(node), node->doc, eid, var);
|
||||
return set_event_handler(&node->event_target, eid, var);
|
||||
}
|
||||
|
||||
static inline HRESULT get_node_event(HTMLDOMNode *node, eventid_t eid, VARIANT *var)
|
||||
{
|
||||
return get_event_handler(get_node_event_target(node), eid, var);
|
||||
return get_event_handler(&node->event_target, eid, var);
|
||||
}
|
||||
|
||||
static inline HRESULT set_doc_event(HTMLDocument *doc, eventid_t eid, VARIANT *var)
|
||||
|
|
|
@ -91,14 +91,14 @@ static ULONG WINAPI HTMLFormElement_Release(IHTMLFormElement *iface)
|
|||
static HRESULT WINAPI HTMLFormElement_GetTypeInfoCount(IHTMLFormElement *iface, UINT *pctinfo)
|
||||
{
|
||||
HTMLFormElement *This = impl_from_IHTMLFormElement(iface);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.dispex.IDispatchEx_iface, pctinfo);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.event_target.dispex.IDispatchEx_iface, pctinfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLFormElement_GetTypeInfo(IHTMLFormElement *iface, UINT iTInfo,
|
||||
LCID lcid, ITypeInfo **ppTInfo)
|
||||
{
|
||||
HTMLFormElement *This = impl_from_IHTMLFormElement(iface);
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.dispex.IDispatchEx_iface, iTInfo, lcid,
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.event_target.dispex.IDispatchEx_iface, iTInfo, lcid,
|
||||
ppTInfo);
|
||||
}
|
||||
|
||||
|
@ -107,7 +107,7 @@ static HRESULT WINAPI HTMLFormElement_GetIDsOfNames(IHTMLFormElement *iface, REF
|
|||
LCID lcid, DISPID *rgDispId)
|
||||
{
|
||||
HTMLFormElement *This = impl_from_IHTMLFormElement(iface);
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.event_target.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
cNames, lcid, rgDispId);
|
||||
}
|
||||
|
||||
|
@ -116,7 +116,7 @@ static HRESULT WINAPI HTMLFormElement_Invoke(IHTMLFormElement *iface, DISPID dis
|
|||
VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
|
||||
{
|
||||
HTMLFormElement *This = impl_from_IHTMLFormElement(iface);
|
||||
return IDispatchEx_Invoke(&This->element.node.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
return IDispatchEx_Invoke(&This->element.node.event_target.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
|
||||
}
|
||||
|
||||
|
|
|
@ -53,7 +53,7 @@ static ULONG WINAPI HTMLFrameElement3_Release(IHTMLFrameElement3 *iface)
|
|||
static HRESULT WINAPI HTMLFrameElement3_GetTypeInfoCount(IHTMLFrameElement3 *iface, UINT *pctinfo)
|
||||
{
|
||||
HTMLFrameElement *This = impl_from_IHTMLFrameElement3(iface);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->framebase.element.node.dispex.IDispatchEx_iface,
|
||||
return IDispatchEx_GetTypeInfoCount(&This->framebase.element.node.event_target.dispex.IDispatchEx_iface,
|
||||
pctinfo);
|
||||
}
|
||||
|
||||
|
@ -61,7 +61,7 @@ static HRESULT WINAPI HTMLFrameElement3_GetTypeInfo(IHTMLFrameElement3 *iface, U
|
|||
LCID lcid, ITypeInfo **ppTInfo)
|
||||
{
|
||||
HTMLFrameElement *This = impl_from_IHTMLFrameElement3(iface);
|
||||
return IDispatchEx_GetTypeInfo(&This->framebase.element.node.dispex.IDispatchEx_iface, iTInfo,
|
||||
return IDispatchEx_GetTypeInfo(&This->framebase.element.node.event_target.dispex.IDispatchEx_iface, iTInfo,
|
||||
lcid, ppTInfo);
|
||||
}
|
||||
|
||||
|
@ -69,7 +69,7 @@ static HRESULT WINAPI HTMLFrameElement3_GetIDsOfNames(IHTMLFrameElement3 *iface,
|
|||
LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
|
||||
{
|
||||
HTMLFrameElement *This = impl_from_IHTMLFrameElement3(iface);
|
||||
return IDispatchEx_GetIDsOfNames(&This->framebase.element.node.dispex.IDispatchEx_iface, riid,
|
||||
return IDispatchEx_GetIDsOfNames(&This->framebase.element.node.event_target.dispex.IDispatchEx_iface, riid,
|
||||
rgszNames, cNames, lcid, rgDispId);
|
||||
}
|
||||
|
||||
|
@ -78,7 +78,7 @@ static HRESULT WINAPI HTMLFrameElement3_Invoke(IHTMLFrameElement3 *iface, DISPID
|
|||
VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
|
||||
{
|
||||
HTMLFrameElement *This = impl_from_IHTMLFrameElement3(iface);
|
||||
return IDispatchEx_Invoke(&This->framebase.element.node.dispex.IDispatchEx_iface, dispIdMember,
|
||||
return IDispatchEx_Invoke(&This->framebase.element.node.event_target.dispex.IDispatchEx_iface, dispIdMember,
|
||||
riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
|
||||
}
|
||||
|
||||
|
|
|
@ -80,7 +80,7 @@ static HRESULT WINAPI HTMLFrameBase_GetTypeInfoCount(IHTMLFrameBase *iface, UINT
|
|||
{
|
||||
HTMLFrameBase *This = impl_from_IHTMLFrameBase(iface);
|
||||
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.dispex.IDispatchEx_iface, pctinfo);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.event_target.dispex.IDispatchEx_iface, pctinfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLFrameBase_GetTypeInfo(IHTMLFrameBase *iface, UINT iTInfo,
|
||||
|
@ -88,7 +88,7 @@ static HRESULT WINAPI HTMLFrameBase_GetTypeInfo(IHTMLFrameBase *iface, UINT iTIn
|
|||
{
|
||||
HTMLFrameBase *This = impl_from_IHTMLFrameBase(iface);
|
||||
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.dispex.IDispatchEx_iface, iTInfo, lcid,
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.event_target.dispex.IDispatchEx_iface, iTInfo, lcid,
|
||||
ppTInfo);
|
||||
}
|
||||
|
||||
|
@ -97,7 +97,7 @@ static HRESULT WINAPI HTMLFrameBase_GetIDsOfNames(IHTMLFrameBase *iface, REFIID
|
|||
{
|
||||
HTMLFrameBase *This = impl_from_IHTMLFrameBase(iface);
|
||||
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.event_target.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
cNames, lcid, rgDispId);
|
||||
}
|
||||
|
||||
|
@ -107,7 +107,7 @@ static HRESULT WINAPI HTMLFrameBase_Invoke(IHTMLFrameBase *iface, DISPID dispIdM
|
|||
{
|
||||
HTMLFrameBase *This = impl_from_IHTMLFrameBase(iface);
|
||||
|
||||
return IDispatchEx_Invoke(&This->element.node.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
return IDispatchEx_Invoke(&This->element.node.event_target.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
|
||||
}
|
||||
|
||||
|
|
|
@ -53,14 +53,14 @@ static ULONG WINAPI HTMLGenericElement_Release(IHTMLGenericElement *iface)
|
|||
static HRESULT WINAPI HTMLGenericElement_GetTypeInfoCount(IHTMLGenericElement *iface, UINT *pctinfo)
|
||||
{
|
||||
HTMLGenericElement *This = impl_from_IHTMLGenericElement(iface);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.dispex.IDispatchEx_iface, pctinfo);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.event_target.dispex.IDispatchEx_iface, pctinfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLGenericElement_GetTypeInfo(IHTMLGenericElement *iface, UINT iTInfo,
|
||||
LCID lcid, ITypeInfo **ppTInfo)
|
||||
{
|
||||
HTMLGenericElement *This = impl_from_IHTMLGenericElement(iface);
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.dispex.IDispatchEx_iface, iTInfo, lcid,
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.event_target.dispex.IDispatchEx_iface, iTInfo, lcid,
|
||||
ppTInfo);
|
||||
}
|
||||
|
||||
|
@ -68,7 +68,7 @@ static HRESULT WINAPI HTMLGenericElement_GetIDsOfNames(IHTMLGenericElement *ifac
|
|||
LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
|
||||
{
|
||||
HTMLGenericElement *This = impl_from_IHTMLGenericElement(iface);
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.event_target.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
cNames, lcid, rgDispId);
|
||||
}
|
||||
|
||||
|
@ -77,7 +77,7 @@ static HRESULT WINAPI HTMLGenericElement_Invoke(IHTMLGenericElement *iface, DISP
|
|||
VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
|
||||
{
|
||||
HTMLGenericElement *This = impl_from_IHTMLGenericElement(iface);
|
||||
return IDispatchEx_Invoke(&This->element.node.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
return IDispatchEx_Invoke(&This->element.node.event_target.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
|
||||
}
|
||||
|
||||
|
|
|
@ -55,7 +55,7 @@ static HRESULT WINAPI HTMLTitleElement_GetTypeInfoCount(IHTMLTitleElement *iface
|
|||
{
|
||||
HTMLTitleElement *This = impl_from_IHTMLTitleElement(iface);
|
||||
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.dispex.IDispatchEx_iface, pctinfo);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.event_target.dispex.IDispatchEx_iface, pctinfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLTitleElement_GetTypeInfo(IHTMLTitleElement *iface, UINT iTInfo,
|
||||
|
@ -63,7 +63,7 @@ static HRESULT WINAPI HTMLTitleElement_GetTypeInfo(IHTMLTitleElement *iface, UIN
|
|||
{
|
||||
HTMLTitleElement *This = impl_from_IHTMLTitleElement(iface);
|
||||
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.dispex.IDispatchEx_iface, iTInfo, lcid,
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.event_target.dispex.IDispatchEx_iface, iTInfo, lcid,
|
||||
ppTInfo);
|
||||
}
|
||||
|
||||
|
@ -72,7 +72,7 @@ static HRESULT WINAPI HTMLTitleElement_GetIDsOfNames(IHTMLTitleElement *iface, R
|
|||
{
|
||||
HTMLTitleElement *This = impl_from_IHTMLTitleElement(iface);
|
||||
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.event_target.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
cNames, lcid, rgDispId);
|
||||
}
|
||||
|
||||
|
@ -82,7 +82,7 @@ static HRESULT WINAPI HTMLTitleElement_Invoke(IHTMLTitleElement *iface, DISPID d
|
|||
{
|
||||
HTMLTitleElement *This = impl_from_IHTMLTitleElement(iface);
|
||||
|
||||
return IDispatchEx_Invoke(&This->element.node.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
return IDispatchEx_Invoke(&This->element.node.event_target.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
|
||||
}
|
||||
|
||||
|
@ -214,7 +214,7 @@ static HRESULT WINAPI HTMLHeadElement_GetTypeInfoCount(IHTMLHeadElement *iface,
|
|||
{
|
||||
HTMLHeadElement *This = impl_from_IHTMLHeadElement(iface);
|
||||
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.dispex.IDispatchEx_iface, pctinfo);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.event_target.dispex.IDispatchEx_iface, pctinfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLHeadElement_GetTypeInfo(IHTMLHeadElement *iface, UINT iTInfo,
|
||||
|
@ -222,7 +222,7 @@ static HRESULT WINAPI HTMLHeadElement_GetTypeInfo(IHTMLHeadElement *iface, UINT
|
|||
{
|
||||
HTMLHeadElement *This = impl_from_IHTMLHeadElement(iface);
|
||||
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.dispex.IDispatchEx_iface, iTInfo, lcid,
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.event_target.dispex.IDispatchEx_iface, iTInfo, lcid,
|
||||
ppTInfo);
|
||||
}
|
||||
|
||||
|
@ -232,7 +232,7 @@ static HRESULT WINAPI HTMLHeadElement_GetIDsOfNames(IHTMLHeadElement *iface, REF
|
|||
{
|
||||
HTMLHeadElement *This = impl_from_IHTMLHeadElement(iface);
|
||||
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.event_target.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
cNames, lcid, rgDispId);
|
||||
}
|
||||
|
||||
|
@ -242,7 +242,7 @@ static HRESULT WINAPI HTMLHeadElement_Invoke(IHTMLHeadElement *iface, DISPID dis
|
|||
{
|
||||
HTMLHeadElement *This = impl_from_IHTMLHeadElement(iface);
|
||||
|
||||
return IDispatchEx_Invoke(&This->element.node.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
return IDispatchEx_Invoke(&This->element.node.event_target.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
|
||||
}
|
||||
|
||||
|
|
|
@ -55,7 +55,7 @@ static ULONG WINAPI HTMLIFrameElement_Release(IHTMLIFrameElement *iface)
|
|||
static HRESULT WINAPI HTMLIFrameElement_GetTypeInfoCount(IHTMLIFrameElement *iface, UINT *pctinfo)
|
||||
{
|
||||
HTMLIFrame *This = impl_from_IHTMLIFrameElement(iface);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->framebase.element.node.dispex.IDispatchEx_iface,
|
||||
return IDispatchEx_GetTypeInfoCount(&This->framebase.element.node.event_target.dispex.IDispatchEx_iface,
|
||||
pctinfo);
|
||||
}
|
||||
|
||||
|
@ -63,7 +63,7 @@ static HRESULT WINAPI HTMLIFrameElement_GetTypeInfo(IHTMLIFrameElement *iface, U
|
|||
LCID lcid, ITypeInfo **ppTInfo)
|
||||
{
|
||||
HTMLIFrame *This = impl_from_IHTMLIFrameElement(iface);
|
||||
return IDispatchEx_GetTypeInfo(&This->framebase.element.node.dispex.IDispatchEx_iface, iTInfo,
|
||||
return IDispatchEx_GetTypeInfo(&This->framebase.element.node.event_target.dispex.IDispatchEx_iface, iTInfo,
|
||||
lcid, ppTInfo);
|
||||
}
|
||||
|
||||
|
@ -71,7 +71,7 @@ static HRESULT WINAPI HTMLIFrameElement_GetIDsOfNames(IHTMLIFrameElement *iface,
|
|||
LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
|
||||
{
|
||||
HTMLIFrame *This = impl_from_IHTMLIFrameElement(iface);
|
||||
return IDispatchEx_GetIDsOfNames(&This->framebase.element.node.dispex.IDispatchEx_iface, riid,
|
||||
return IDispatchEx_GetIDsOfNames(&This->framebase.element.node.event_target.dispex.IDispatchEx_iface, riid,
|
||||
rgszNames, cNames, lcid, rgDispId);
|
||||
}
|
||||
|
||||
|
@ -80,7 +80,7 @@ static HRESULT WINAPI HTMLIFrameElement_Invoke(IHTMLIFrameElement *iface, DISPID
|
|||
VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
|
||||
{
|
||||
HTMLIFrame *This = impl_from_IHTMLIFrameElement(iface);
|
||||
return IDispatchEx_Invoke(&This->framebase.element.node.dispex.IDispatchEx_iface, dispIdMember,
|
||||
return IDispatchEx_Invoke(&This->framebase.element.node.event_target.dispex.IDispatchEx_iface, dispIdMember,
|
||||
riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
|
||||
}
|
||||
|
||||
|
@ -172,7 +172,7 @@ static ULONG WINAPI HTMLIFrameElement2_Release(IHTMLIFrameElement2 *iface)
|
|||
static HRESULT WINAPI HTMLIFrameElement2_GetTypeInfoCount(IHTMLIFrameElement2 *iface, UINT *pctinfo)
|
||||
{
|
||||
HTMLIFrame *This = impl_from_IHTMLIFrameElement2(iface);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->framebase.element.node.dispex.IDispatchEx_iface,
|
||||
return IDispatchEx_GetTypeInfoCount(&This->framebase.element.node.event_target.dispex.IDispatchEx_iface,
|
||||
pctinfo);
|
||||
}
|
||||
|
||||
|
@ -180,7 +180,7 @@ static HRESULT WINAPI HTMLIFrameElement2_GetTypeInfo(IHTMLIFrameElement2 *iface,
|
|||
LCID lcid, ITypeInfo **ppTInfo)
|
||||
{
|
||||
HTMLIFrame *This = impl_from_IHTMLIFrameElement2(iface);
|
||||
return IDispatchEx_GetTypeInfo(&This->framebase.element.node.dispex.IDispatchEx_iface, iTInfo,
|
||||
return IDispatchEx_GetTypeInfo(&This->framebase.element.node.event_target.dispex.IDispatchEx_iface, iTInfo,
|
||||
lcid, ppTInfo);
|
||||
}
|
||||
|
||||
|
@ -188,7 +188,7 @@ static HRESULT WINAPI HTMLIFrameElement2_GetIDsOfNames(IHTMLIFrameElement2 *ifac
|
|||
LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
|
||||
{
|
||||
HTMLIFrame *This = impl_from_IHTMLIFrameElement2(iface);
|
||||
return IDispatchEx_GetIDsOfNames(&This->framebase.element.node.dispex.IDispatchEx_iface, riid,
|
||||
return IDispatchEx_GetIDsOfNames(&This->framebase.element.node.event_target.dispex.IDispatchEx_iface, riid,
|
||||
rgszNames, cNames, lcid, rgDispId);
|
||||
}
|
||||
|
||||
|
@ -197,7 +197,7 @@ static HRESULT WINAPI HTMLIFrameElement2_Invoke(IHTMLIFrameElement2 *iface, DISP
|
|||
VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
|
||||
{
|
||||
HTMLIFrame *This = impl_from_IHTMLIFrameElement2(iface);
|
||||
return IDispatchEx_Invoke(&This->framebase.element.node.dispex.IDispatchEx_iface, dispIdMember,
|
||||
return IDispatchEx_Invoke(&This->framebase.element.node.event_target.dispex.IDispatchEx_iface, dispIdMember,
|
||||
riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
|
||||
}
|
||||
|
||||
|
@ -323,7 +323,7 @@ static ULONG WINAPI HTMLIFrameElement3_Release(IHTMLIFrameElement3 *iface)
|
|||
static HRESULT WINAPI HTMLIFrameElement3_GetTypeInfoCount(IHTMLIFrameElement3 *iface, UINT *pctinfo)
|
||||
{
|
||||
HTMLIFrame *This = impl_from_IHTMLIFrameElement3(iface);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->framebase.element.node.dispex.IDispatchEx_iface,
|
||||
return IDispatchEx_GetTypeInfoCount(&This->framebase.element.node.event_target.dispex.IDispatchEx_iface,
|
||||
pctinfo);
|
||||
}
|
||||
|
||||
|
@ -331,7 +331,7 @@ static HRESULT WINAPI HTMLIFrameElement3_GetTypeInfo(IHTMLIFrameElement3 *iface,
|
|||
LCID lcid, ITypeInfo **ppTInfo)
|
||||
{
|
||||
HTMLIFrame *This = impl_from_IHTMLIFrameElement3(iface);
|
||||
return IDispatchEx_GetTypeInfo(&This->framebase.element.node.dispex.IDispatchEx_iface, iTInfo,
|
||||
return IDispatchEx_GetTypeInfo(&This->framebase.element.node.event_target.dispex.IDispatchEx_iface, iTInfo,
|
||||
lcid, ppTInfo);
|
||||
}
|
||||
|
||||
|
@ -339,7 +339,7 @@ static HRESULT WINAPI HTMLIFrameElement3_GetIDsOfNames(IHTMLIFrameElement3 *ifac
|
|||
LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
|
||||
{
|
||||
HTMLIFrame *This = impl_from_IHTMLIFrameElement3(iface);
|
||||
return IDispatchEx_GetIDsOfNames(&This->framebase.element.node.dispex.IDispatchEx_iface, riid,
|
||||
return IDispatchEx_GetIDsOfNames(&This->framebase.element.node.event_target.dispex.IDispatchEx_iface, riid,
|
||||
rgszNames, cNames, lcid, rgDispId);
|
||||
}
|
||||
|
||||
|
@ -348,7 +348,7 @@ static HRESULT WINAPI HTMLIFrameElement3_Invoke(IHTMLIFrameElement3 *iface, DISP
|
|||
VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
|
||||
{
|
||||
HTMLIFrame *This = impl_from_IHTMLIFrameElement3(iface);
|
||||
return IDispatchEx_Invoke(&This->framebase.element.node.dispex.IDispatchEx_iface, dispIdMember,
|
||||
return IDispatchEx_Invoke(&This->framebase.element.node.event_target.dispex.IDispatchEx_iface, dispIdMember,
|
||||
riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
|
||||
}
|
||||
|
||||
|
|
|
@ -55,14 +55,14 @@ static ULONG WINAPI HTMLImgElement_Release(IHTMLImgElement *iface)
|
|||
static HRESULT WINAPI HTMLImgElement_GetTypeInfoCount(IHTMLImgElement *iface, UINT *pctinfo)
|
||||
{
|
||||
HTMLImgElement *This = impl_from_IHTMLImgElement(iface);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.dispex.IDispatchEx_iface, pctinfo);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.event_target.dispex.IDispatchEx_iface, pctinfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLImgElement_GetTypeInfo(IHTMLImgElement *iface, UINT iTInfo,
|
||||
LCID lcid, ITypeInfo **ppTInfo)
|
||||
{
|
||||
HTMLImgElement *This = impl_from_IHTMLImgElement(iface);
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.dispex.IDispatchEx_iface, iTInfo, lcid,
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.event_target.dispex.IDispatchEx_iface, iTInfo, lcid,
|
||||
ppTInfo);
|
||||
}
|
||||
|
||||
|
@ -71,7 +71,7 @@ static HRESULT WINAPI HTMLImgElement_GetIDsOfNames(IHTMLImgElement *iface, REFII
|
|||
LCID lcid, DISPID *rgDispId)
|
||||
{
|
||||
HTMLImgElement *This = impl_from_IHTMLImgElement(iface);
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.event_target.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
cNames, lcid, rgDispId);
|
||||
}
|
||||
|
||||
|
@ -80,7 +80,7 @@ static HRESULT WINAPI HTMLImgElement_Invoke(IHTMLImgElement *iface, DISPID dispI
|
|||
VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
|
||||
{
|
||||
HTMLImgElement *This = impl_from_IHTMLImgElement(iface);
|
||||
return IDispatchEx_Invoke(&This->element.node.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
return IDispatchEx_Invoke(&This->element.node.event_target.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
|
||||
}
|
||||
|
||||
|
|
|
@ -67,7 +67,7 @@ static HRESULT WINAPI HTMLInputElement_GetTypeInfoCount(IHTMLInputElement *iface
|
|||
{
|
||||
HTMLInputElement *This = impl_from_IHTMLInputElement(iface);
|
||||
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.dispex.IDispatchEx_iface, pctinfo);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.event_target.dispex.IDispatchEx_iface, pctinfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLInputElement_GetTypeInfo(IHTMLInputElement *iface, UINT iTInfo,
|
||||
|
@ -75,7 +75,7 @@ static HRESULT WINAPI HTMLInputElement_GetTypeInfo(IHTMLInputElement *iface, UIN
|
|||
{
|
||||
HTMLInputElement *This = impl_from_IHTMLInputElement(iface);
|
||||
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.dispex.IDispatchEx_iface, iTInfo, lcid,
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.event_target.dispex.IDispatchEx_iface, iTInfo, lcid,
|
||||
ppTInfo);
|
||||
}
|
||||
|
||||
|
@ -85,7 +85,7 @@ static HRESULT WINAPI HTMLInputElement_GetIDsOfNames(IHTMLInputElement *iface, R
|
|||
{
|
||||
HTMLInputElement *This = impl_from_IHTMLInputElement(iface);
|
||||
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.event_target.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
cNames, lcid, rgDispId);
|
||||
}
|
||||
|
||||
|
@ -95,7 +95,7 @@ static HRESULT WINAPI HTMLInputElement_Invoke(IHTMLInputElement *iface, DISPID d
|
|||
{
|
||||
HTMLInputElement *This = impl_from_IHTMLInputElement(iface);
|
||||
|
||||
return IDispatchEx_Invoke(&This->element.node.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
return IDispatchEx_Invoke(&This->element.node.event_target.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
|
||||
}
|
||||
|
||||
|
@ -908,14 +908,14 @@ static ULONG WINAPI HTMLInputTextElement_Release(IHTMLInputTextElement *iface)
|
|||
static HRESULT WINAPI HTMLInputTextElement_GetTypeInfoCount(IHTMLInputTextElement *iface, UINT *pctinfo)
|
||||
{
|
||||
HTMLInputElement *This = impl_from_IHTMLInputTextElement(iface);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.dispex.IDispatchEx_iface, pctinfo);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.event_target.dispex.IDispatchEx_iface, pctinfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLInputTextElement_GetTypeInfo(IHTMLInputTextElement *iface, UINT iTInfo,
|
||||
LCID lcid, ITypeInfo **ppTInfo)
|
||||
{
|
||||
HTMLInputElement *This = impl_from_IHTMLInputTextElement(iface);
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.dispex.IDispatchEx_iface, iTInfo, lcid,
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.event_target.dispex.IDispatchEx_iface, iTInfo, lcid,
|
||||
ppTInfo);
|
||||
}
|
||||
|
||||
|
@ -923,7 +923,7 @@ static HRESULT WINAPI HTMLInputTextElement_GetIDsOfNames(IHTMLInputTextElement *
|
|||
LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
|
||||
{
|
||||
HTMLInputElement *This = impl_from_IHTMLInputTextElement(iface);
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.event_target.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
cNames, lcid, rgDispId);
|
||||
}
|
||||
|
||||
|
@ -932,7 +932,7 @@ static HRESULT WINAPI HTMLInputTextElement_Invoke(IHTMLInputTextElement *iface,
|
|||
VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
|
||||
{
|
||||
HTMLInputElement *This = impl_from_IHTMLInputTextElement(iface);
|
||||
return IDispatchEx_Invoke(&This->element.node.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
return IDispatchEx_Invoke(&This->element.node.event_target.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
|
||||
}
|
||||
|
||||
|
@ -1384,7 +1384,7 @@ static HRESULT WINAPI HTMLLabelElement_GetTypeInfoCount(IHTMLLabelElement *iface
|
|||
{
|
||||
HTMLLabelElement *This = impl_from_IHTMLLabelElement(iface);
|
||||
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.dispex.IDispatchEx_iface, pctinfo);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.event_target.dispex.IDispatchEx_iface, pctinfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLLabelElement_GetTypeInfo(IHTMLLabelElement *iface, UINT iTInfo,
|
||||
|
@ -1392,7 +1392,7 @@ static HRESULT WINAPI HTMLLabelElement_GetTypeInfo(IHTMLLabelElement *iface, UIN
|
|||
{
|
||||
HTMLLabelElement *This = impl_from_IHTMLLabelElement(iface);
|
||||
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.event_target.dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLLabelElement_GetIDsOfNames(IHTMLLabelElement *iface, REFIID riid,
|
||||
|
@ -1400,7 +1400,7 @@ static HRESULT WINAPI HTMLLabelElement_GetIDsOfNames(IHTMLLabelElement *iface, R
|
|||
{
|
||||
HTMLLabelElement *This = impl_from_IHTMLLabelElement(iface);
|
||||
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.event_target.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
cNames, lcid, rgDispId);
|
||||
}
|
||||
|
||||
|
@ -1410,7 +1410,7 @@ static HRESULT WINAPI HTMLLabelElement_Invoke(IHTMLLabelElement *iface, DISPID d
|
|||
{
|
||||
HTMLLabelElement *This = impl_from_IHTMLLabelElement(iface);
|
||||
|
||||
return IDispatchEx_Invoke(&This->element.node.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
return IDispatchEx_Invoke(&This->element.node.event_target.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
|
||||
}
|
||||
|
||||
|
@ -1574,7 +1574,7 @@ static HRESULT WINAPI HTMLButtonElement_GetTypeInfoCount(IHTMLButtonElement *ifa
|
|||
{
|
||||
HTMLButtonElement *This = impl_from_IHTMLButtonElement(iface);
|
||||
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.dispex.IDispatchEx_iface, pctinfo);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.event_target.dispex.IDispatchEx_iface, pctinfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLButtonElement_GetTypeInfo(IHTMLButtonElement *iface, UINT iTInfo,
|
||||
|
@ -1582,7 +1582,7 @@ static HRESULT WINAPI HTMLButtonElement_GetTypeInfo(IHTMLButtonElement *iface, U
|
|||
{
|
||||
HTMLButtonElement *This = impl_from_IHTMLButtonElement(iface);
|
||||
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.event_target.dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLButtonElement_GetIDsOfNames(IHTMLButtonElement *iface, REFIID riid,
|
||||
|
@ -1590,7 +1590,7 @@ static HRESULT WINAPI HTMLButtonElement_GetIDsOfNames(IHTMLButtonElement *iface,
|
|||
{
|
||||
HTMLButtonElement *This = impl_from_IHTMLButtonElement(iface);
|
||||
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.event_target.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
cNames, lcid, rgDispId);
|
||||
}
|
||||
|
||||
|
@ -1600,7 +1600,7 @@ static HRESULT WINAPI HTMLButtonElement_Invoke(IHTMLButtonElement *iface, DISPID
|
|||
{
|
||||
HTMLButtonElement *This = impl_from_IHTMLButtonElement(iface);
|
||||
|
||||
return IDispatchEx_Invoke(&This->element.node.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
return IDispatchEx_Invoke(&This->element.node.event_target.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
|
||||
}
|
||||
|
||||
|
|
|
@ -56,7 +56,7 @@ static HRESULT WINAPI HTMLLinkElement_GetTypeInfoCount(IHTMLLinkElement *iface,
|
|||
{
|
||||
HTMLLinkElement *This = impl_from_IHTMLLinkElement(iface);
|
||||
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.dispex.IDispatchEx_iface, pctinfo);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.event_target.dispex.IDispatchEx_iface, pctinfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLLinkElement_GetTypeInfo(IHTMLLinkElement *iface, UINT iTInfo,
|
||||
|
@ -64,7 +64,7 @@ static HRESULT WINAPI HTMLLinkElement_GetTypeInfo(IHTMLLinkElement *iface, UINT
|
|||
{
|
||||
HTMLLinkElement *This = impl_from_IHTMLLinkElement(iface);
|
||||
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.dispex.IDispatchEx_iface, iTInfo, lcid,
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.event_target.dispex.IDispatchEx_iface, iTInfo, lcid,
|
||||
ppTInfo);
|
||||
}
|
||||
|
||||
|
@ -74,7 +74,7 @@ static HRESULT WINAPI HTMLLinkElement_GetIDsOfNames(IHTMLLinkElement *iface, REF
|
|||
{
|
||||
HTMLLinkElement *This = impl_from_IHTMLLinkElement(iface);
|
||||
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.event_target.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
cNames, lcid, rgDispId);
|
||||
}
|
||||
|
||||
|
@ -84,7 +84,7 @@ static HRESULT WINAPI HTMLLinkElement_Invoke(IHTMLLinkElement *iface, DISPID dis
|
|||
{
|
||||
HTMLLinkElement *This = impl_from_IHTMLLinkElement(iface);
|
||||
|
||||
return IDispatchEx_Invoke(&This->element.node.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
return IDispatchEx_Invoke(&This->element.node.event_target.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
|
||||
}
|
||||
|
||||
|
|
|
@ -498,8 +498,15 @@ static HRESULT WINAPI HTMLLocation_get_search(IHTMLLocation *iface, BSTR *p)
|
|||
static HRESULT WINAPI HTMLLocation_put_hash(IHTMLLocation *iface, BSTR v)
|
||||
{
|
||||
HTMLLocation *This = impl_from_IHTMLLocation(iface);
|
||||
FIXME("(%p)->(%s)\n", This, debugstr_w(v));
|
||||
return E_NOTIMPL;
|
||||
|
||||
TRACE("(%p)->(%s)\n", This, debugstr_w(v));
|
||||
|
||||
if(!This->window || !This->window->base.outer_window) {
|
||||
FIXME("No window available\n");
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
return navigate_url(This->window->base.outer_window, v, This->window->base.outer_window->uri, 0);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLLocation_get_hash(IHTMLLocation *iface, BSTR *p)
|
||||
|
|
|
@ -53,14 +53,14 @@ static ULONG WINAPI HTMLMetaElement_Release(IHTMLMetaElement *iface)
|
|||
static HRESULT WINAPI HTMLMetaElement_GetTypeInfoCount(IHTMLMetaElement *iface, UINT *pctinfo)
|
||||
{
|
||||
HTMLMetaElement *This = impl_from_IHTMLMetaElement(iface);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.dispex.IDispatchEx_iface, pctinfo);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.event_target.dispex.IDispatchEx_iface, pctinfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLMetaElement_GetTypeInfo(IHTMLMetaElement *iface, UINT iTInfo,
|
||||
LCID lcid, ITypeInfo **ppTInfo)
|
||||
{
|
||||
HTMLMetaElement *This = impl_from_IHTMLMetaElement(iface);
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.dispex.IDispatchEx_iface, iTInfo, lcid,
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.event_target.dispex.IDispatchEx_iface, iTInfo, lcid,
|
||||
ppTInfo);
|
||||
}
|
||||
|
||||
|
@ -68,7 +68,7 @@ static HRESULT WINAPI HTMLMetaElement_GetIDsOfNames(IHTMLMetaElement *iface, REF
|
|||
LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
|
||||
{
|
||||
HTMLMetaElement *This = impl_from_IHTMLMetaElement(iface);
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.event_target.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
cNames, lcid, rgDispId);
|
||||
}
|
||||
|
||||
|
@ -77,7 +77,7 @@ static HRESULT WINAPI HTMLMetaElement_Invoke(IHTMLMetaElement *iface, DISPID dis
|
|||
UINT *puArgErr)
|
||||
{
|
||||
HTMLMetaElement *This = impl_from_IHTMLMetaElement(iface);
|
||||
return IDispatchEx_Invoke(&This->element.node.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
return IDispatchEx_Invoke(&This->element.node.event_target.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
|
||||
}
|
||||
|
||||
|
|
|
@ -486,14 +486,14 @@ static ULONG WINAPI HTMLDOMNode_Release(IHTMLDOMNode *iface)
|
|||
static HRESULT WINAPI HTMLDOMNode_GetTypeInfoCount(IHTMLDOMNode *iface, UINT *pctinfo)
|
||||
{
|
||||
HTMLDOMNode *This = impl_from_IHTMLDOMNode(iface);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->dispex.IDispatchEx_iface, pctinfo);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->event_target.dispex.IDispatchEx_iface, pctinfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLDOMNode_GetTypeInfo(IHTMLDOMNode *iface, UINT iTInfo,
|
||||
LCID lcid, ITypeInfo **ppTInfo)
|
||||
{
|
||||
HTMLDOMNode *This = impl_from_IHTMLDOMNode(iface);
|
||||
return IDispatchEx_GetTypeInfo(&This->dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
|
||||
return IDispatchEx_GetTypeInfo(&This->event_target.dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLDOMNode_GetIDsOfNames(IHTMLDOMNode *iface, REFIID riid,
|
||||
|
@ -501,7 +501,7 @@ static HRESULT WINAPI HTMLDOMNode_GetIDsOfNames(IHTMLDOMNode *iface, REFIID riid
|
|||
LCID lcid, DISPID *rgDispId)
|
||||
{
|
||||
HTMLDOMNode *This = impl_from_IHTMLDOMNode(iface);
|
||||
return IDispatchEx_GetIDsOfNames(&This->dispex.IDispatchEx_iface, riid, rgszNames, cNames,
|
||||
return IDispatchEx_GetIDsOfNames(&This->event_target.dispex.IDispatchEx_iface, riid, rgszNames, cNames,
|
||||
lcid, rgDispId);
|
||||
}
|
||||
|
||||
|
@ -510,7 +510,7 @@ static HRESULT WINAPI HTMLDOMNode_Invoke(IHTMLDOMNode *iface, DISPID dispIdMembe
|
|||
VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
|
||||
{
|
||||
HTMLDOMNode *This = impl_from_IHTMLDOMNode(iface);
|
||||
return IDispatchEx_Invoke(&This->dispex.IDispatchEx_iface, dispIdMember, riid, lcid,
|
||||
return IDispatchEx_Invoke(&This->event_target.dispex.IDispatchEx_iface, dispIdMember, riid, lcid,
|
||||
wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
|
||||
}
|
||||
|
||||
|
@ -1084,14 +1084,14 @@ static ULONG WINAPI HTMLDOMNode2_Release(IHTMLDOMNode2 *iface)
|
|||
static HRESULT WINAPI HTMLDOMNode2_GetTypeInfoCount(IHTMLDOMNode2 *iface, UINT *pctinfo)
|
||||
{
|
||||
HTMLDOMNode *This = impl_from_IHTMLDOMNode2(iface);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->dispex.IDispatchEx_iface, pctinfo);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->event_target.dispex.IDispatchEx_iface, pctinfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLDOMNode2_GetTypeInfo(IHTMLDOMNode2 *iface, UINT iTInfo,
|
||||
LCID lcid, ITypeInfo **ppTInfo)
|
||||
{
|
||||
HTMLDOMNode *This = impl_from_IHTMLDOMNode2(iface);
|
||||
return IDispatchEx_GetTypeInfo(&This->dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
|
||||
return IDispatchEx_GetTypeInfo(&This->event_target.dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLDOMNode2_GetIDsOfNames(IHTMLDOMNode2 *iface, REFIID riid,
|
||||
|
@ -1099,7 +1099,7 @@ static HRESULT WINAPI HTMLDOMNode2_GetIDsOfNames(IHTMLDOMNode2 *iface, REFIID ri
|
|||
LCID lcid, DISPID *rgDispId)
|
||||
{
|
||||
HTMLDOMNode *This = impl_from_IHTMLDOMNode2(iface);
|
||||
return IDispatchEx_GetIDsOfNames(&This->dispex.IDispatchEx_iface, riid, rgszNames, cNames,
|
||||
return IDispatchEx_GetIDsOfNames(&This->event_target.dispex.IDispatchEx_iface, riid, rgszNames, cNames,
|
||||
lcid, rgDispId);
|
||||
}
|
||||
|
||||
|
@ -1108,7 +1108,7 @@ static HRESULT WINAPI HTMLDOMNode2_Invoke(IHTMLDOMNode2 *iface, DISPID dispIdMem
|
|||
VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
|
||||
{
|
||||
HTMLDOMNode *This = impl_from_IHTMLDOMNode2(iface);
|
||||
return IDispatchEx_Invoke(&This->dispex.IDispatchEx_iface, dispIdMember, riid, lcid,
|
||||
return IDispatchEx_Invoke(&This->event_target.dispex.IDispatchEx_iface, dispIdMember, riid, lcid,
|
||||
wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
|
||||
}
|
||||
|
||||
|
@ -1147,8 +1147,6 @@ HRESULT HTMLDOMNode_QI(HTMLDOMNode *This, REFIID riid, void **ppv)
|
|||
*ppv = &This->IHTMLDOMNode_iface;
|
||||
}else if(IsEqualGUID(&IID_IDispatch, riid)) {
|
||||
*ppv = &This->IHTMLDOMNode_iface;
|
||||
}else if(IsEqualGUID(&IID_IDispatchEx, riid) && This->dispex.data) {
|
||||
*ppv = &This->dispex.IDispatchEx_iface;
|
||||
}else if(IsEqualGUID(&IID_IHTMLDOMNode, riid)) {
|
||||
*ppv = &This->IHTMLDOMNode_iface;
|
||||
}else if(IsEqualGUID(&IID_IHTMLDOMNode2, riid)) {
|
||||
|
@ -1159,7 +1157,7 @@ HRESULT HTMLDOMNode_QI(HTMLDOMNode *This, REFIID riid, void **ppv)
|
|||
}else if(IsEqualGUID(&IID_nsCycleCollectionISupports, riid)) {
|
||||
*ppv = &This->IHTMLDOMNode_iface;
|
||||
return NS_OK;
|
||||
}else if(dispex_query_interface(&This->dispex, riid, ppv)) {
|
||||
}else if(dispex_query_interface(&This->event_target.dispex, riid, ppv)) {
|
||||
return *ppv ? S_OK : E_NOINTERFACE;
|
||||
}else {
|
||||
*ppv = NULL;
|
||||
|
@ -1177,8 +1175,8 @@ void HTMLDOMNode_destructor(HTMLDOMNode *This)
|
|||
nsIDOMNode_Release(This->nsnode);
|
||||
if(This->doc && &This->doc->node != This)
|
||||
htmldoc_release(&This->doc->basedoc);
|
||||
if(This->event_target)
|
||||
release_event_target(This->event_target);
|
||||
if(This->event_target.ptr)
|
||||
release_event_target(This->event_target.ptr);
|
||||
}
|
||||
|
||||
static HRESULT HTMLDOMNode_clone(HTMLDOMNode *This, nsIDOMNode *nsnode, HTMLDOMNode **ret)
|
||||
|
@ -1278,7 +1276,7 @@ static nsresult NSAPI HTMLDOMNode_traverse(void *ccp, void *p, nsCycleCollection
|
|||
note_cc_edge((nsISupports*)This->nsnode, "This->nsnode", cb);
|
||||
if(This->doc && &This->doc->node != This)
|
||||
note_cc_edge((nsISupports*)&This->doc->node.IHTMLDOMNode_iface, "This->doc", cb);
|
||||
dispex_traverse(&This->dispex, cb);
|
||||
dispex_traverse(&This->event_target.dispex, cb);
|
||||
|
||||
if(This->vtbl->traverse)
|
||||
This->vtbl->traverse(This, cb);
|
||||
|
@ -1295,7 +1293,7 @@ static nsresult NSAPI HTMLDOMNode_unlink(void *p)
|
|||
if(This->vtbl->unlink)
|
||||
This->vtbl->unlink(This);
|
||||
|
||||
dispex_unlink(&This->dispex);
|
||||
dispex_unlink(&This->event_target.dispex);
|
||||
|
||||
if(This->nsnode) {
|
||||
nsIDOMNode *nsnode = This->nsnode;
|
||||
|
@ -1323,7 +1321,7 @@ static void NSAPI HTMLDOMNode_delete_cycle_collectable(void *p)
|
|||
if(This->vtbl->unlink)
|
||||
This->vtbl->unlink(This);
|
||||
This->vtbl->destructor(This);
|
||||
release_dispex(&This->dispex);
|
||||
release_dispex(&This->event_target.dispex);
|
||||
heap_free(This);
|
||||
}
|
||||
|
||||
|
|
|
@ -58,7 +58,7 @@ static ULONG WINAPI HTMLObjectElement_Release(IHTMLObjectElement *iface)
|
|||
static HRESULT WINAPI HTMLObjectElement_GetTypeInfoCount(IHTMLObjectElement *iface, UINT *pctinfo)
|
||||
{
|
||||
HTMLObjectElement *This = impl_from_IHTMLObjectElement(iface);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->plugin_container.element.node.dispex.IDispatchEx_iface,
|
||||
return IDispatchEx_GetTypeInfoCount(&This->plugin_container.element.node.event_target.dispex.IDispatchEx_iface,
|
||||
pctinfo);
|
||||
}
|
||||
|
||||
|
@ -66,7 +66,7 @@ static HRESULT WINAPI HTMLObjectElement_GetTypeInfo(IHTMLObjectElement *iface, U
|
|||
LCID lcid, ITypeInfo **ppTInfo)
|
||||
{
|
||||
HTMLObjectElement *This = impl_from_IHTMLObjectElement(iface);
|
||||
return IDispatchEx_GetTypeInfo(&This->plugin_container.element.node.dispex.IDispatchEx_iface,
|
||||
return IDispatchEx_GetTypeInfo(&This->plugin_container.element.node.event_target.dispex.IDispatchEx_iface,
|
||||
iTInfo, lcid, ppTInfo);
|
||||
}
|
||||
|
||||
|
@ -75,7 +75,7 @@ static HRESULT WINAPI HTMLObjectElement_GetIDsOfNames(IHTMLObjectElement *iface,
|
|||
LCID lcid, DISPID *rgDispId)
|
||||
{
|
||||
HTMLObjectElement *This = impl_from_IHTMLObjectElement(iface);
|
||||
return IDispatchEx_GetIDsOfNames(&This->plugin_container.element.node.dispex.IDispatchEx_iface,
|
||||
return IDispatchEx_GetIDsOfNames(&This->plugin_container.element.node.event_target.dispex.IDispatchEx_iface,
|
||||
riid, rgszNames, cNames, lcid, rgDispId);
|
||||
}
|
||||
|
||||
|
@ -84,7 +84,7 @@ static HRESULT WINAPI HTMLObjectElement_Invoke(IHTMLObjectElement *iface, DISPID
|
|||
VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
|
||||
{
|
||||
HTMLObjectElement *This = impl_from_IHTMLObjectElement(iface);
|
||||
return IDispatchEx_Invoke(&This->plugin_container.element.node.dispex.IDispatchEx_iface,
|
||||
return IDispatchEx_Invoke(&This->plugin_container.element.node.event_target.dispex.IDispatchEx_iface,
|
||||
dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
|
||||
}
|
||||
|
||||
|
@ -519,7 +519,7 @@ static ULONG WINAPI HTMLObjectElement2_Release(IHTMLObjectElement2 *iface)
|
|||
static HRESULT WINAPI HTMLObjectElement2_GetTypeInfoCount(IHTMLObjectElement2 *iface, UINT *pctinfo)
|
||||
{
|
||||
HTMLObjectElement *This = impl_from_IHTMLObjectElement2(iface);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->plugin_container.element.node.dispex.IDispatchEx_iface,
|
||||
return IDispatchEx_GetTypeInfoCount(&This->plugin_container.element.node.event_target.dispex.IDispatchEx_iface,
|
||||
pctinfo);
|
||||
}
|
||||
|
||||
|
@ -527,7 +527,7 @@ static HRESULT WINAPI HTMLObjectElement2_GetTypeInfo(IHTMLObjectElement2 *iface,
|
|||
LCID lcid, ITypeInfo **ppTInfo)
|
||||
{
|
||||
HTMLObjectElement *This = impl_from_IHTMLObjectElement2(iface);
|
||||
return IDispatchEx_GetTypeInfo(&This->plugin_container.element.node.dispex.IDispatchEx_iface,
|
||||
return IDispatchEx_GetTypeInfo(&This->plugin_container.element.node.event_target.dispex.IDispatchEx_iface,
|
||||
iTInfo, lcid, ppTInfo);
|
||||
}
|
||||
|
||||
|
@ -535,7 +535,7 @@ static HRESULT WINAPI HTMLObjectElement2_GetIDsOfNames(IHTMLObjectElement2 *ifac
|
|||
LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
|
||||
{
|
||||
HTMLObjectElement *This = impl_from_IHTMLObjectElement2(iface);
|
||||
return IDispatchEx_GetIDsOfNames(&This->plugin_container.element.node.dispex.IDispatchEx_iface,
|
||||
return IDispatchEx_GetIDsOfNames(&This->plugin_container.element.node.event_target.dispex.IDispatchEx_iface,
|
||||
riid, rgszNames, cNames, lcid, rgDispId);
|
||||
}
|
||||
|
||||
|
@ -544,7 +544,7 @@ static HRESULT WINAPI HTMLObjectElement2_Invoke(IHTMLObjectElement2 *iface, DISP
|
|||
EXCEPINFO *pExcepInfo, UINT *puArgErr)
|
||||
{
|
||||
HTMLObjectElement *This = impl_from_IHTMLObjectElement2(iface);
|
||||
return IDispatchEx_Invoke(&This->plugin_container.element.node.dispex.IDispatchEx_iface,
|
||||
return IDispatchEx_Invoke(&This->plugin_container.element.node.event_target.dispex.IDispatchEx_iface,
|
||||
dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
|
||||
}
|
||||
|
||||
|
@ -570,7 +570,7 @@ static HRESULT WINAPI HTMLObjectElement2_put_classid(IHTMLObjectElement2 *iface,
|
|||
return hres;
|
||||
|
||||
if(This->plugin_container.plugin_host) {
|
||||
FIXME("Host already asociated.\n");
|
||||
FIXME("Host already associated.\n");
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -629,21 +629,20 @@ static HRESULT HTMLObjectElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv)
|
|||
{
|
||||
HTMLObjectElement *This = impl_from_HTMLDOMNode(iface);
|
||||
|
||||
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
|
||||
|
||||
if(IsEqualGUID(&IID_IUnknown, riid)) {
|
||||
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
|
||||
*ppv = &This->IHTMLObjectElement_iface;
|
||||
}else if(IsEqualGUID(&IID_IDispatch, riid)) {
|
||||
TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv);
|
||||
*ppv = &This->IHTMLObjectElement_iface;
|
||||
}else if(IsEqualGUID(&IID_IHTMLObjectElement, riid)) {
|
||||
TRACE("(%p)->(IID_IHTMLObjectElement %p)\n", This, ppv);
|
||||
*ppv = &This->IHTMLObjectElement_iface;
|
||||
}else if(IsEqualGUID(&IID_IHTMLObjectElement2, riid)) {
|
||||
TRACE("(%p)->(IID_IHTMLObjectElement2 %p)\n", This, ppv);
|
||||
*ppv = &This->IHTMLObjectElement2_iface;
|
||||
}else if(IsEqualGUID(&IID_HTMLPluginContainer, riid)) {
|
||||
TRACE("(%p)->(IID_HTMLPluginContainer %p)\n", This, ppv);
|
||||
/* Special pseudo-interface returning HTMLPluginContainse struct. */
|
||||
*ppv = &This->plugin_container;
|
||||
node_addref(&This->plugin_container.element.node);
|
||||
return S_OK;
|
||||
}else {
|
||||
HRESULT hres;
|
||||
|
|
|
@ -56,14 +56,14 @@ static ULONG WINAPI HTMLOptionElement_Release(IHTMLOptionElement *iface)
|
|||
static HRESULT WINAPI HTMLOptionElement_GetTypeInfoCount(IHTMLOptionElement *iface, UINT *pctinfo)
|
||||
{
|
||||
HTMLOptionElement *This = impl_from_IHTMLOptionElement(iface);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.dispex.IDispatchEx_iface, pctinfo);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.event_target.dispex.IDispatchEx_iface, pctinfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLOptionElement_GetTypeInfo(IHTMLOptionElement *iface, UINT iTInfo,
|
||||
LCID lcid, ITypeInfo **ppTInfo)
|
||||
{
|
||||
HTMLOptionElement *This = impl_from_IHTMLOptionElement(iface);
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.dispex.IDispatchEx_iface, iTInfo, lcid,
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.event_target.dispex.IDispatchEx_iface, iTInfo, lcid,
|
||||
ppTInfo);
|
||||
}
|
||||
|
||||
|
@ -72,7 +72,7 @@ static HRESULT WINAPI HTMLOptionElement_GetIDsOfNames(IHTMLOptionElement *iface,
|
|||
LCID lcid, DISPID *rgDispId)
|
||||
{
|
||||
HTMLOptionElement *This = impl_from_IHTMLOptionElement(iface);
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.event_target.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
cNames, lcid, rgDispId);
|
||||
}
|
||||
|
||||
|
@ -81,7 +81,7 @@ static HRESULT WINAPI HTMLOptionElement_Invoke(IHTMLOptionElement *iface, DISPID
|
|||
VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
|
||||
{
|
||||
HTMLOptionElement *This = impl_from_IHTMLOptionElement(iface);
|
||||
return IDispatchEx_Invoke(&This->element.node.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
return IDispatchEx_Invoke(&This->element.node.event_target.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
|
||||
}
|
||||
|
||||
|
@ -152,15 +152,53 @@ static HRESULT WINAPI HTMLOptionElement_get_value(IHTMLOptionElement *iface, BST
|
|||
static HRESULT WINAPI HTMLOptionElement_put_defaultSelected(IHTMLOptionElement *iface, VARIANT_BOOL v)
|
||||
{
|
||||
HTMLOptionElement *This = impl_from_IHTMLOptionElement(iface);
|
||||
FIXME("(%p)->(%x)\n", This, v);
|
||||
return E_NOTIMPL;
|
||||
cpp_bool val, selected;
|
||||
nsresult nsres;
|
||||
|
||||
TRACE("(%p)->(%x)\n", This, v);
|
||||
|
||||
val = (v == VARIANT_TRUE);
|
||||
|
||||
nsres = nsIDOMHTMLOptionElement_GetSelected(This->nsoption, &selected);
|
||||
if(NS_FAILED(nsres)) {
|
||||
ERR("GetSelected failed: %08x\n", nsres);
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
nsres = nsIDOMHTMLOptionElement_SetDefaultSelected(This->nsoption, val);
|
||||
if(NS_FAILED(nsres)) {
|
||||
ERR("SetDefaultSelected failed: %08x\n", nsres);
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
if(val != selected) {
|
||||
nsres = nsIDOMHTMLOptionElement_SetSelected(This->nsoption, selected); /* WinAPI will reserve selected property */
|
||||
if(NS_FAILED(nsres)) {
|
||||
ERR("SetSelected failed: %08x\n", nsres);
|
||||
return E_FAIL;
|
||||
}
|
||||
}
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLOptionElement_get_defaultSelected(IHTMLOptionElement *iface, VARIANT_BOOL *p)
|
||||
{
|
||||
HTMLOptionElement *This = impl_from_IHTMLOptionElement(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
cpp_bool val;
|
||||
nsresult nsres;
|
||||
|
||||
TRACE("(%p)->(%p)\n", This, p);
|
||||
if(!p)
|
||||
return E_POINTER;
|
||||
nsres = nsIDOMHTMLOptionElement_GetDefaultSelected(This->nsoption, &val);
|
||||
if(NS_FAILED(nsres)) {
|
||||
ERR("GetDefaultSelected failed: %08x\n", nsres);
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
*p = val ? VARIANT_TRUE : VARIANT_FALSE;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLOptionElement_put_index(IHTMLOptionElement *iface, LONG v)
|
||||
|
@ -173,8 +211,21 @@ static HRESULT WINAPI HTMLOptionElement_put_index(IHTMLOptionElement *iface, LON
|
|||
static HRESULT WINAPI HTMLOptionElement_get_index(IHTMLOptionElement *iface, LONG *p)
|
||||
{
|
||||
HTMLOptionElement *This = impl_from_IHTMLOptionElement(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
LONG val;
|
||||
nsresult nsres;
|
||||
|
||||
TRACE("(%p)->(%p)\n", This, p);
|
||||
|
||||
if(!p)
|
||||
return E_INVALIDARG;
|
||||
|
||||
nsres = nsIDOMHTMLOptionElement_GetIndex(This->nsoption, &val);
|
||||
if(NS_FAILED(nsres)) {
|
||||
ERR("GetIndex failed: %08x\n", nsres);
|
||||
return E_FAIL;
|
||||
}
|
||||
*p = val;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLOptionElement_put_text(IHTMLOptionElement *iface, BSTR v)
|
||||
|
@ -242,8 +293,42 @@ static HRESULT WINAPI HTMLOptionElement_get_text(IHTMLOptionElement *iface, BSTR
|
|||
static HRESULT WINAPI HTMLOptionElement_get_form(IHTMLOptionElement *iface, IHTMLFormElement **p)
|
||||
{
|
||||
HTMLOptionElement *This = impl_from_IHTMLOptionElement(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
nsIDOMHTMLFormElement *nsform;
|
||||
nsIDOMNode *form_node;
|
||||
HTMLDOMNode *node;
|
||||
HRESULT hres;
|
||||
nsresult nsres;
|
||||
|
||||
TRACE("(%p)->(%p)\n", This, p);
|
||||
|
||||
if(!p)
|
||||
return E_POINTER;
|
||||
|
||||
nsres = nsIDOMHTMLOptionElement_GetForm(This->nsoption, &nsform);
|
||||
if (NS_FAILED(nsres)) {
|
||||
ERR("GetForm failed: %08x, nsform: %p\n", nsres, nsform);
|
||||
*p = NULL;
|
||||
return E_FAIL;
|
||||
}
|
||||
if (nsform == NULL) {
|
||||
TRACE("nsform not found\n");
|
||||
*p = NULL;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
nsres = nsIDOMHTMLFormElement_QueryInterface(nsform, &IID_nsIDOMNode, (void**)&form_node);
|
||||
nsIDOMHTMLFormElement_Release(nsform);
|
||||
assert(nsres == NS_OK);
|
||||
|
||||
hres = get_node(This->element.node.doc, form_node, TRUE, &node);
|
||||
nsIDOMNode_Release(form_node);
|
||||
if (FAILED(hres))
|
||||
return hres;
|
||||
|
||||
hres = IHTMLDOMNode_QueryInterface(&node->IHTMLDOMNode_iface, &IID_IHTMLElement, (void**)p);
|
||||
|
||||
node_release(node);
|
||||
return hres;
|
||||
}
|
||||
|
||||
static const IHTMLOptionElementVtbl HTMLOptionElementVtbl = {
|
||||
|
|
|
@ -48,14 +48,14 @@ static ULONG WINAPI HTMLScriptElement_Release(IHTMLScriptElement *iface)
|
|||
static HRESULT WINAPI HTMLScriptElement_GetTypeInfoCount(IHTMLScriptElement *iface, UINT *pctinfo)
|
||||
{
|
||||
HTMLScriptElement *This = impl_from_IHTMLScriptElement(iface);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.dispex.IDispatchEx_iface, pctinfo);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.event_target.dispex.IDispatchEx_iface, pctinfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLScriptElement_GetTypeInfo(IHTMLScriptElement *iface, UINT iTInfo,
|
||||
LCID lcid, ITypeInfo **ppTInfo)
|
||||
{
|
||||
HTMLScriptElement *This = impl_from_IHTMLScriptElement(iface);
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.dispex.IDispatchEx_iface, iTInfo, lcid,
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.event_target.dispex.IDispatchEx_iface, iTInfo, lcid,
|
||||
ppTInfo);
|
||||
}
|
||||
|
||||
|
@ -64,7 +64,7 @@ static HRESULT WINAPI HTMLScriptElement_GetIDsOfNames(IHTMLScriptElement *iface,
|
|||
LCID lcid, DISPID *rgDispId)
|
||||
{
|
||||
HTMLScriptElement *This = impl_from_IHTMLScriptElement(iface);
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.event_target.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
cNames, lcid, rgDispId);
|
||||
}
|
||||
|
||||
|
@ -73,7 +73,7 @@ static HRESULT WINAPI HTMLScriptElement_Invoke(IHTMLScriptElement *iface, DISPID
|
|||
VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
|
||||
{
|
||||
HTMLScriptElement *This = impl_from_IHTMLScriptElement(iface);
|
||||
return IDispatchEx_Invoke(&This->element.node.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
return IDispatchEx_Invoke(&This->element.node.event_target.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
|
||||
}
|
||||
|
||||
|
|
|
@ -92,7 +92,7 @@ static HRESULT WINAPI HTMLSelectElement_GetTypeInfoCount(IHTMLSelectElement *ifa
|
|||
{
|
||||
HTMLSelectElement *This = impl_from_IHTMLSelectElement(iface);
|
||||
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.dispex.IDispatchEx_iface, pctinfo);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.event_target.dispex.IDispatchEx_iface, pctinfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLSelectElement_GetTypeInfo(IHTMLSelectElement *iface, UINT iTInfo,
|
||||
|
@ -100,7 +100,7 @@ static HRESULT WINAPI HTMLSelectElement_GetTypeInfo(IHTMLSelectElement *iface, U
|
|||
{
|
||||
HTMLSelectElement *This = impl_from_IHTMLSelectElement(iface);
|
||||
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.dispex.IDispatchEx_iface, iTInfo, lcid,
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.event_target.dispex.IDispatchEx_iface, iTInfo, lcid,
|
||||
ppTInfo);
|
||||
}
|
||||
|
||||
|
@ -110,7 +110,7 @@ static HRESULT WINAPI HTMLSelectElement_GetIDsOfNames(IHTMLSelectElement *iface,
|
|||
{
|
||||
HTMLSelectElement *This = impl_from_IHTMLSelectElement(iface);
|
||||
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.event_target.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
cNames, lcid, rgDispId);
|
||||
}
|
||||
|
||||
|
@ -120,22 +120,44 @@ static HRESULT WINAPI HTMLSelectElement_Invoke(IHTMLSelectElement *iface, DISPID
|
|||
{
|
||||
HTMLSelectElement *This = impl_from_IHTMLSelectElement(iface);
|
||||
|
||||
return IDispatchEx_Invoke(&This->element.node.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
return IDispatchEx_Invoke(&This->element.node.event_target.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLSelectElement_put_size(IHTMLSelectElement *iface, LONG v)
|
||||
{
|
||||
HTMLSelectElement *This = impl_from_IHTMLSelectElement(iface);
|
||||
FIXME("(%p)->(%d)\n", This, v);
|
||||
return E_NOTIMPL;
|
||||
nsresult nsres;
|
||||
|
||||
TRACE("(%p)->(%d)\n", This, v);
|
||||
if(v < 0)
|
||||
return CTL_E_INVALIDPROPERTYVALUE;
|
||||
|
||||
nsres = nsIDOMHTMLSelectElement_SetSize(This->nsselect, v);
|
||||
if(NS_FAILED(nsres)) {
|
||||
ERR("SetSize failed: %08x\n", nsres);
|
||||
return E_FAIL;
|
||||
}
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLSelectElement_get_size(IHTMLSelectElement *iface, LONG *p)
|
||||
{
|
||||
HTMLSelectElement *This = impl_from_IHTMLSelectElement(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
DWORD val;
|
||||
nsresult nsres;
|
||||
|
||||
TRACE("(%p)->(%p)\n", This, p);
|
||||
if(!p)
|
||||
return E_INVALIDARG;
|
||||
|
||||
nsres = nsIDOMHTMLSelectElement_GetSize(This->nsselect, &val);
|
||||
if(NS_FAILED(nsres)) {
|
||||
ERR("GetSize failed: %08x\n", nsres);
|
||||
return E_FAIL;
|
||||
}
|
||||
*p = val;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLSelectElement_put_multiple(IHTMLSelectElement *iface, VARIANT_BOOL v)
|
||||
|
@ -168,40 +190,33 @@ static HRESULT WINAPI HTMLSelectElement_get_multiple(IHTMLSelectElement *iface,
|
|||
static HRESULT WINAPI HTMLSelectElement_put_name(IHTMLSelectElement *iface, BSTR v)
|
||||
{
|
||||
HTMLSelectElement *This = impl_from_IHTMLSelectElement(iface);
|
||||
FIXME("(%p)->(%s)\n", This, debugstr_w(v));
|
||||
return E_NOTIMPL;
|
||||
nsAString str;
|
||||
nsresult nsres;
|
||||
|
||||
TRACE("(%p)->(%s)\n", This, debugstr_w(v));
|
||||
nsAString_InitDepend(&str, v);
|
||||
nsres = nsIDOMHTMLSelectElement_SetName(This->nsselect, &str);
|
||||
nsAString_Finish(&str);
|
||||
|
||||
if(NS_FAILED(nsres)) {
|
||||
ERR("SetName failed: %08x\n", nsres);
|
||||
return E_FAIL;
|
||||
}
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLSelectElement_get_name(IHTMLSelectElement *iface, BSTR *p)
|
||||
{
|
||||
HTMLSelectElement *This = impl_from_IHTMLSelectElement(iface);
|
||||
nsAString name_str;
|
||||
const PRUnichar *name = NULL;
|
||||
nsresult nsres;
|
||||
|
||||
TRACE("(%p)->(%p)\n", This, p);
|
||||
|
||||
nsAString_Init(&name_str, NULL);
|
||||
|
||||
nsres = nsIDOMHTMLSelectElement_GetName(This->nsselect, &name_str);
|
||||
if(NS_SUCCEEDED(nsres)) {
|
||||
static const WCHAR wszGarbage[] = {'g','a','r','b','a','g','e',0};
|
||||
|
||||
nsAString_GetData(&name_str, &name);
|
||||
|
||||
/*
|
||||
* Native never returns empty string here. If an element has no name,
|
||||
* name of previous element or ramdom data is returned.
|
||||
*/
|
||||
*p = SysAllocString(*name ? name : wszGarbage);
|
||||
}else {
|
||||
ERR("GetName failed: %08x\n", nsres);
|
||||
}
|
||||
|
||||
nsAString_Finish(&name_str);
|
||||
|
||||
TRACE("name=%s\n", debugstr_w(*p));
|
||||
return S_OK;
|
||||
return return_nsstr(nsres, &name_str, p);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLSelectElement_get_options(IHTMLSelectElement *iface, IDispatch **p)
|
||||
|
@ -341,8 +356,42 @@ static HRESULT WINAPI HTMLSelectElement_get_disabled(IHTMLSelectElement *iface,
|
|||
static HRESULT WINAPI HTMLSelectElement_get_form(IHTMLSelectElement *iface, IHTMLFormElement **p)
|
||||
{
|
||||
HTMLSelectElement *This = impl_from_IHTMLSelectElement(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
nsIDOMHTMLFormElement *nsform;
|
||||
nsIDOMNode *form_node;
|
||||
HTMLDOMNode *node;
|
||||
HRESULT hres;
|
||||
nsresult nsres;
|
||||
|
||||
TRACE("(%p)->(%p)\n", This, p);
|
||||
|
||||
if(!p)
|
||||
return E_POINTER;
|
||||
|
||||
nsres = nsIDOMHTMLSelectElement_GetForm(This->nsselect, &nsform);
|
||||
if (NS_FAILED(nsres)) {
|
||||
ERR("GetForm failed: %08x, nsform: %p\n", nsres, nsform);
|
||||
*p = NULL;
|
||||
return E_FAIL;
|
||||
}
|
||||
if (nsform == NULL) {
|
||||
TRACE("nsform not found\n");
|
||||
*p = NULL;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
nsres = nsIDOMHTMLFormElement_QueryInterface(nsform, &IID_nsIDOMNode, (void**)&form_node);
|
||||
nsIDOMHTMLFormElement_Release(nsform);
|
||||
assert(nsres == NS_OK);
|
||||
|
||||
hres = get_node(This->element.node.doc, form_node, TRUE, &node);
|
||||
nsIDOMNode_Release(form_node);
|
||||
if (FAILED(hres))
|
||||
return hres;
|
||||
|
||||
hres = IHTMLDOMNode_QueryInterface(&node->IHTMLDOMNode_iface, &IID_IHTMLElement, (void**)p);
|
||||
|
||||
node_release(node);
|
||||
return hres;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLSelectElement_add(IHTMLSelectElement *iface, IHTMLElement *element,
|
||||
|
@ -395,6 +444,9 @@ static HRESULT WINAPI HTMLSelectElement_remove(IHTMLSelectElement *iface, LONG i
|
|||
HTMLSelectElement *This = impl_from_IHTMLSelectElement(iface);
|
||||
nsresult nsres;
|
||||
TRACE("(%p)->(%d)\n", This, index);
|
||||
if(index < 0)
|
||||
return E_INVALIDARG;
|
||||
|
||||
nsres = nsIDOMHTMLSelectElement_select_Remove(This->nsselect, index);
|
||||
if(NS_FAILED(nsres)) {
|
||||
ERR("Remove failed: %08x\n", nsres);
|
||||
|
|
|
@ -388,7 +388,7 @@ HRESULT set_nsstyle_attr(nsIDOMCSSStyleDeclaration *nsstyle, styleid_t sid, cons
|
|||
if(value) {
|
||||
if(flags & ATTR_FIX_PX)
|
||||
val = fix_px_value(value);
|
||||
if(flags & ATTR_FIX_URL)
|
||||
else if(flags & ATTR_FIX_URL)
|
||||
val = fix_url_value(value);
|
||||
}
|
||||
|
||||
|
|
|
@ -546,7 +546,7 @@ static HRESULT WINAPI HTMLStyle5_get_maxHeight(IHTMLStyle5 *iface, VARIANT *p)
|
|||
{
|
||||
HTMLStyle *This = impl_from_IHTMLStyle5(iface);
|
||||
|
||||
TRACE("(%p)->(%p)\n", This, debugstr_variant(p));
|
||||
TRACE("(%p)->(%s)\n", This, debugstr_variant(p));
|
||||
|
||||
return get_nsstyle_attr_var(This->nsstyle, STYLEID_MAX_HEIGHT, p, 0);
|
||||
}
|
||||
|
|
|
@ -57,14 +57,14 @@ static ULONG WINAPI HTMLStyleElement_Release(IHTMLStyleElement *iface)
|
|||
static HRESULT WINAPI HTMLStyleElement_GetTypeInfoCount(IHTMLStyleElement *iface, UINT *pctinfo)
|
||||
{
|
||||
HTMLStyleElement *This = impl_from_IHTMLStyleElement(iface);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.dispex.IDispatchEx_iface, pctinfo);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.event_target.dispex.IDispatchEx_iface, pctinfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLStyleElement_GetTypeInfo(IHTMLStyleElement *iface, UINT iTInfo,
|
||||
LCID lcid, ITypeInfo **ppTInfo)
|
||||
{
|
||||
HTMLStyleElement *This = impl_from_IHTMLStyleElement(iface);
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.dispex.IDispatchEx_iface, iTInfo, lcid,
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.event_target.dispex.IDispatchEx_iface, iTInfo, lcid,
|
||||
ppTInfo);
|
||||
}
|
||||
|
||||
|
@ -72,7 +72,7 @@ static HRESULT WINAPI HTMLStyleElement_GetIDsOfNames(IHTMLStyleElement *iface, R
|
|||
LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
|
||||
{
|
||||
HTMLStyleElement *This = impl_from_IHTMLStyleElement(iface);
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.event_target.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
cNames, lcid, rgDispId);
|
||||
}
|
||||
|
||||
|
@ -81,7 +81,7 @@ static HRESULT WINAPI HTMLStyleElement_Invoke(IHTMLStyleElement *iface, DISPID d
|
|||
VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
|
||||
{
|
||||
HTMLStyleElement *This = impl_from_IHTMLStyleElement(iface);
|
||||
return IDispatchEx_Invoke(&This->element.node.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
return IDispatchEx_Invoke(&This->element.node.event_target.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
|
||||
}
|
||||
|
||||
|
|
|
@ -119,14 +119,14 @@ static ULONG WINAPI HTMLTable_Release(IHTMLTable *iface)
|
|||
static HRESULT WINAPI HTMLTable_GetTypeInfoCount(IHTMLTable *iface, UINT *pctinfo)
|
||||
{
|
||||
HTMLTable *This = impl_from_IHTMLTable(iface);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.dispex.IDispatchEx_iface, pctinfo);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.event_target.dispex.IDispatchEx_iface, pctinfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLTable_GetTypeInfo(IHTMLTable *iface, UINT iTInfo,
|
||||
LCID lcid, ITypeInfo **ppTInfo)
|
||||
{
|
||||
HTMLTable *This = impl_from_IHTMLTable(iface);
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.dispex.IDispatchEx_iface, iTInfo, lcid,
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.event_target.dispex.IDispatchEx_iface, iTInfo, lcid,
|
||||
ppTInfo);
|
||||
}
|
||||
|
||||
|
@ -135,7 +135,7 @@ static HRESULT WINAPI HTMLTable_GetIDsOfNames(IHTMLTable *iface, REFIID riid,
|
|||
LCID lcid, DISPID *rgDispId)
|
||||
{
|
||||
HTMLTable *This = impl_from_IHTMLTable(iface);
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.event_target.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
cNames, lcid, rgDispId);
|
||||
}
|
||||
|
||||
|
@ -144,7 +144,7 @@ static HRESULT WINAPI HTMLTable_Invoke(IHTMLTable *iface, DISPID dispIdMember,
|
|||
VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
|
||||
{
|
||||
HTMLTable *This = impl_from_IHTMLTable(iface);
|
||||
return IDispatchEx_Invoke(&This->element.node.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
return IDispatchEx_Invoke(&This->element.node.event_target.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
|
||||
}
|
||||
|
||||
|
@ -792,14 +792,14 @@ static ULONG WINAPI HTMLTable2_Release(IHTMLTable2 *iface)
|
|||
static HRESULT WINAPI HTMLTable2_GetTypeInfoCount(IHTMLTable2 *iface, UINT *pctinfo)
|
||||
{
|
||||
HTMLTable *This = impl_from_IHTMLTable2(iface);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.dispex.IDispatchEx_iface, pctinfo);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.event_target.dispex.IDispatchEx_iface, pctinfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLTable2_GetTypeInfo(IHTMLTable2 *iface, UINT iTInfo,
|
||||
LCID lcid, ITypeInfo **ppTInfo)
|
||||
{
|
||||
HTMLTable *This = impl_from_IHTMLTable2(iface);
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.dispex.IDispatchEx_iface, iTInfo, lcid,
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.event_target.dispex.IDispatchEx_iface, iTInfo, lcid,
|
||||
ppTInfo);
|
||||
}
|
||||
|
||||
|
@ -808,7 +808,7 @@ static HRESULT WINAPI HTMLTable2_GetIDsOfNames(IHTMLTable2 *iface, REFIID riid,
|
|||
LCID lcid, DISPID *rgDispId)
|
||||
{
|
||||
HTMLTable *This = impl_from_IHTMLTable2(iface);
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.event_target.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
cNames, lcid, rgDispId);
|
||||
}
|
||||
|
||||
|
@ -817,7 +817,7 @@ static HRESULT WINAPI HTMLTable2_Invoke(IHTMLTable2 *iface, DISPID dispIdMember,
|
|||
VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
|
||||
{
|
||||
HTMLTable *This = impl_from_IHTMLTable2(iface);
|
||||
return IDispatchEx_Invoke(&This->element.node.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
return IDispatchEx_Invoke(&This->element.node.event_target.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
|
||||
}
|
||||
|
||||
|
@ -890,14 +890,14 @@ static ULONG WINAPI HTMLTable3_Release(IHTMLTable3 *iface)
|
|||
static HRESULT WINAPI HTMLTable3_GetTypeInfoCount(IHTMLTable3 *iface, UINT *pctinfo)
|
||||
{
|
||||
HTMLTable *This = impl_from_IHTMLTable3(iface);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.dispex.IDispatchEx_iface, pctinfo);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.event_target.dispex.IDispatchEx_iface, pctinfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLTable3_GetTypeInfo(IHTMLTable3 *iface, UINT iTInfo,
|
||||
LCID lcid, ITypeInfo **ppTInfo)
|
||||
{
|
||||
HTMLTable *This = impl_from_IHTMLTable3(iface);
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.dispex.IDispatchEx_iface, iTInfo, lcid,
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.event_target.dispex.IDispatchEx_iface, iTInfo, lcid,
|
||||
ppTInfo);
|
||||
}
|
||||
|
||||
|
@ -906,7 +906,7 @@ static HRESULT WINAPI HTMLTable3_GetIDsOfNames(IHTMLTable3 *iface, REFIID riid,
|
|||
LCID lcid, DISPID *rgDispId)
|
||||
{
|
||||
HTMLTable *This = impl_from_IHTMLTable3(iface);
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.event_target.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
cNames, lcid, rgDispId);
|
||||
}
|
||||
|
||||
|
@ -915,7 +915,7 @@ static HRESULT WINAPI HTMLTable3_Invoke(IHTMLTable3 *iface, DISPID dispIdMember,
|
|||
VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
|
||||
{
|
||||
HTMLTable *This = impl_from_IHTMLTable3(iface);
|
||||
return IDispatchEx_Invoke(&This->element.node.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
return IDispatchEx_Invoke(&This->element.node.event_target.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
|
||||
}
|
||||
|
||||
|
|
|
@ -55,14 +55,14 @@ static ULONG WINAPI HTMLTableCell_Release(IHTMLTableCell *iface)
|
|||
static HRESULT WINAPI HTMLTableCell_GetTypeInfoCount(IHTMLTableCell *iface, UINT *pctinfo)
|
||||
{
|
||||
HTMLTableCell *This = impl_from_IHTMLTableCell(iface);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.dispex.IDispatchEx_iface, pctinfo);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.event_target.dispex.IDispatchEx_iface, pctinfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLTableCell_GetTypeInfo(IHTMLTableCell *iface, UINT iTInfo,
|
||||
LCID lcid, ITypeInfo **ppTInfo)
|
||||
{
|
||||
HTMLTableCell *This = impl_from_IHTMLTableCell(iface);
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.dispex.IDispatchEx_iface, iTInfo, lcid,
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.event_target.dispex.IDispatchEx_iface, iTInfo, lcid,
|
||||
ppTInfo);
|
||||
}
|
||||
|
||||
|
@ -70,7 +70,7 @@ static HRESULT WINAPI HTMLTableCell_GetIDsOfNames(IHTMLTableCell *iface, REFIID
|
|||
LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
|
||||
{
|
||||
HTMLTableCell *This = impl_from_IHTMLTableCell(iface);
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.event_target.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
cNames, lcid, rgDispId);
|
||||
}
|
||||
|
||||
|
@ -79,7 +79,7 @@ static HRESULT WINAPI HTMLTableCell_Invoke(IHTMLTableCell *iface, DISPID dispIdM
|
|||
UINT *puArgErr)
|
||||
{
|
||||
HTMLTableCell *This = impl_from_IHTMLTableCell(iface);
|
||||
return IDispatchEx_Invoke(&This->element.node.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
return IDispatchEx_Invoke(&This->element.node.event_target.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
|
||||
}
|
||||
|
||||
|
|
|
@ -56,14 +56,14 @@ static ULONG WINAPI HTMLTableRow_Release(IHTMLTableRow *iface)
|
|||
static HRESULT WINAPI HTMLTableRow_GetTypeInfoCount(IHTMLTableRow *iface, UINT *pctinfo)
|
||||
{
|
||||
HTMLTableRow *This = impl_from_IHTMLTableRow(iface);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.dispex.IDispatchEx_iface, pctinfo);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.event_target.dispex.IDispatchEx_iface, pctinfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLTableRow_GetTypeInfo(IHTMLTableRow *iface, UINT iTInfo,
|
||||
LCID lcid, ITypeInfo **ppTInfo)
|
||||
{
|
||||
HTMLTableRow *This = impl_from_IHTMLTableRow(iface);
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.dispex.IDispatchEx_iface, iTInfo, lcid,
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.event_target.dispex.IDispatchEx_iface, iTInfo, lcid,
|
||||
ppTInfo);
|
||||
}
|
||||
|
||||
|
@ -72,7 +72,7 @@ static HRESULT WINAPI HTMLTableRow_GetIDsOfNames(IHTMLTableRow *iface, REFIID ri
|
|||
LCID lcid, DISPID *rgDispId)
|
||||
{
|
||||
HTMLTableRow *This = impl_from_IHTMLTableRow(iface);
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.event_target.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
cNames, lcid, rgDispId);
|
||||
}
|
||||
|
||||
|
@ -81,7 +81,7 @@ static HRESULT WINAPI HTMLTableRow_Invoke(IHTMLTableRow *iface, DISPID dispIdMem
|
|||
VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
|
||||
{
|
||||
HTMLTableRow *This = impl_from_IHTMLTableRow(iface);
|
||||
return IDispatchEx_Invoke(&This->element.node.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
return IDispatchEx_Invoke(&This->element.node.event_target.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
|
||||
}
|
||||
|
||||
|
|
|
@ -56,14 +56,14 @@ static ULONG WINAPI HTMLTextAreaElement_Release(IHTMLTextAreaElement *iface)
|
|||
static HRESULT WINAPI HTMLTextAreaElement_GetTypeInfoCount(IHTMLTextAreaElement *iface, UINT *pctinfo)
|
||||
{
|
||||
HTMLTextAreaElement *This = impl_from_IHTMLTextAreaElement(iface);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.dispex.IDispatchEx_iface, pctinfo);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.event_target.dispex.IDispatchEx_iface, pctinfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLTextAreaElement_GetTypeInfo(IHTMLTextAreaElement *iface, UINT iTInfo,
|
||||
LCID lcid, ITypeInfo **ppTInfo)
|
||||
{
|
||||
HTMLTextAreaElement *This = impl_from_IHTMLTextAreaElement(iface);
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.dispex.IDispatchEx_iface, iTInfo, lcid,
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.event_target.dispex.IDispatchEx_iface, iTInfo, lcid,
|
||||
ppTInfo);
|
||||
}
|
||||
|
||||
|
@ -72,7 +72,7 @@ static HRESULT WINAPI HTMLTextAreaElement_GetIDsOfNames(IHTMLTextAreaElement *if
|
|||
LCID lcid, DISPID *rgDispId)
|
||||
{
|
||||
HTMLTextAreaElement *This = impl_from_IHTMLTextAreaElement(iface);
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.event_target.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
cNames, lcid, rgDispId);
|
||||
}
|
||||
|
||||
|
@ -81,7 +81,7 @@ static HRESULT WINAPI HTMLTextAreaElement_Invoke(IHTMLTextAreaElement *iface, DI
|
|||
VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
|
||||
{
|
||||
HTMLTextAreaElement *This = impl_from_IHTMLTextAreaElement(iface);
|
||||
return IDispatchEx_Invoke(&This->element.node.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
return IDispatchEx_Invoke(&This->element.node.event_target.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
|
||||
}
|
||||
|
||||
|
@ -215,15 +215,28 @@ static HRESULT WINAPI HTMLTextAreaElement_get_form(IHTMLTextAreaElement *iface,
|
|||
static HRESULT WINAPI HTMLTextAreaElement_put_defaultValue(IHTMLTextAreaElement *iface, BSTR v)
|
||||
{
|
||||
HTMLTextAreaElement *This = impl_from_IHTMLTextAreaElement(iface);
|
||||
FIXME("(%p)->(%s)\n", This, debugstr_w(v));
|
||||
return E_NOTIMPL;
|
||||
nsAString nsstr;
|
||||
nsresult nsres;
|
||||
|
||||
TRACE("(%p)->(%s)\n", This, debugstr_w(v));
|
||||
|
||||
nsAString_InitDepend(&nsstr, v);
|
||||
nsres = nsIDOMHTMLTextAreaElement_SetDefaultValue(This->nstextarea, &nsstr);
|
||||
nsAString_Finish(&nsstr);
|
||||
return NS_SUCCEEDED(nsres) ? S_OK : E_FAIL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLTextAreaElement_get_defaultValue(IHTMLTextAreaElement *iface, BSTR *p)
|
||||
{
|
||||
HTMLTextAreaElement *This = impl_from_IHTMLTextAreaElement(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
nsAString nsstr;
|
||||
nsresult nsres;
|
||||
|
||||
TRACE("(%p)->(%p)\n", This, p);
|
||||
|
||||
nsAString_Init(&nsstr, NULL);
|
||||
nsres = nsIDOMHTMLTextAreaElement_GetDefaultValue(This->nstextarea, &nsstr);
|
||||
return return_nsstr(nsres, &nsstr, p);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLTextAreaElement_select(IHTMLTextAreaElement *iface)
|
||||
|
|
|
@ -45,14 +45,14 @@ static ULONG WINAPI HTMLTextContainer_Release(IHTMLTextContainer *iface)
|
|||
static HRESULT WINAPI HTMLTextContainer_GetTypeInfoCount(IHTMLTextContainer *iface, UINT *pctinfo)
|
||||
{
|
||||
HTMLTextContainer *This = impl_from_IHTMLTextContainer(iface);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.dispex.IDispatchEx_iface, pctinfo);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->element.node.event_target.dispex.IDispatchEx_iface, pctinfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLTextContainer_GetTypeInfo(IHTMLTextContainer *iface, UINT iTInfo,
|
||||
LCID lcid, ITypeInfo **ppTInfo)
|
||||
{
|
||||
HTMLTextContainer *This = impl_from_IHTMLTextContainer(iface);
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.dispex.IDispatchEx_iface, iTInfo, lcid,
|
||||
return IDispatchEx_GetTypeInfo(&This->element.node.event_target.dispex.IDispatchEx_iface, iTInfo, lcid,
|
||||
ppTInfo);
|
||||
}
|
||||
|
||||
|
@ -61,7 +61,7 @@ static HRESULT WINAPI HTMLTextContainer_GetIDsOfNames(IHTMLTextContainer *iface,
|
|||
LCID lcid, DISPID *rgDispId)
|
||||
{
|
||||
HTMLTextContainer *This = impl_from_IHTMLTextContainer(iface);
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
return IDispatchEx_GetIDsOfNames(&This->element.node.event_target.dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
cNames, lcid, rgDispId);
|
||||
}
|
||||
|
||||
|
@ -70,7 +70,7 @@ static HRESULT WINAPI HTMLTextContainer_Invoke(IHTMLTextContainer *iface, DISPID
|
|||
VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
|
||||
{
|
||||
HTMLTextContainer *This = impl_from_IHTMLTextContainer(iface);
|
||||
return IDispatchEx_Invoke(&This->element.node.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
return IDispatchEx_Invoke(&This->element.node.event_target.dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
|
||||
}
|
||||
|
||||
|
|
|
@ -56,14 +56,14 @@ static ULONG WINAPI HTMLDOMTextNode_Release(IHTMLDOMTextNode *iface)
|
|||
static HRESULT WINAPI HTMLDOMTextNode_GetTypeInfoCount(IHTMLDOMTextNode *iface, UINT *pctinfo)
|
||||
{
|
||||
HTMLDOMTextNode *This = impl_from_IHTMLDOMTextNode(iface);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->node.dispex.IDispatchEx_iface, pctinfo);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->node.event_target.dispex.IDispatchEx_iface, pctinfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLDOMTextNode_GetTypeInfo(IHTMLDOMTextNode *iface, UINT iTInfo,
|
||||
LCID lcid, ITypeInfo **ppTInfo)
|
||||
{
|
||||
HTMLDOMTextNode *This = impl_from_IHTMLDOMTextNode(iface);
|
||||
return IDispatchEx_GetTypeInfo(&This->node.dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
|
||||
return IDispatchEx_GetTypeInfo(&This->node.event_target.dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLDOMTextNode_GetIDsOfNames(IHTMLDOMTextNode *iface, REFIID riid,
|
||||
|
@ -71,7 +71,7 @@ static HRESULT WINAPI HTMLDOMTextNode_GetIDsOfNames(IHTMLDOMTextNode *iface, REF
|
|||
LCID lcid, DISPID *rgDispId)
|
||||
{
|
||||
HTMLDOMTextNode *This = impl_from_IHTMLDOMTextNode(iface);
|
||||
return IDispatchEx_GetIDsOfNames(&This->node.dispex.IDispatchEx_iface, riid, rgszNames, cNames,
|
||||
return IDispatchEx_GetIDsOfNames(&This->node.event_target.dispex.IDispatchEx_iface, riid, rgszNames, cNames,
|
||||
lcid, rgDispId);
|
||||
}
|
||||
|
||||
|
@ -80,7 +80,7 @@ static HRESULT WINAPI HTMLDOMTextNode_Invoke(IHTMLDOMTextNode *iface, DISPID dis
|
|||
VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
|
||||
{
|
||||
HTMLDOMTextNode *This = impl_from_IHTMLDOMTextNode(iface);
|
||||
return IDispatchEx_Invoke(&This->node.dispex.IDispatchEx_iface, dispIdMember, riid, lcid,
|
||||
return IDispatchEx_Invoke(&This->node.event_target.dispex.IDispatchEx_iface, dispIdMember, riid, lcid,
|
||||
wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
|
||||
}
|
||||
|
||||
|
@ -208,21 +208,21 @@ static ULONG WINAPI HTMLDOMTextNode2_Release(IHTMLDOMTextNode2 *iface)
|
|||
static HRESULT WINAPI HTMLDOMTextNode2_GetTypeInfoCount(IHTMLDOMTextNode2 *iface, UINT *pctinfo)
|
||||
{
|
||||
HTMLDOMTextNode *This = impl_from_IHTMLDOMTextNode2(iface);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->node.dispex.IDispatchEx_iface, pctinfo);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->node.event_target.dispex.IDispatchEx_iface, pctinfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLDOMTextNode2_GetTypeInfo(IHTMLDOMTextNode2 *iface, UINT iTInfo,
|
||||
LCID lcid, ITypeInfo **ppTInfo)
|
||||
{
|
||||
HTMLDOMTextNode *This = impl_from_IHTMLDOMTextNode2(iface);
|
||||
return IDispatchEx_GetTypeInfo(&This->node.dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
|
||||
return IDispatchEx_GetTypeInfo(&This->node.event_target.dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLDOMTextNode2_GetIDsOfNames(IHTMLDOMTextNode2 *iface, REFIID riid,
|
||||
LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
|
||||
{
|
||||
HTMLDOMTextNode *This = impl_from_IHTMLDOMTextNode2(iface);
|
||||
return IDispatchEx_GetIDsOfNames(&This->node.dispex.IDispatchEx_iface, riid, rgszNames, cNames,
|
||||
return IDispatchEx_GetIDsOfNames(&This->node.event_target.dispex.IDispatchEx_iface, riid, rgszNames, cNames,
|
||||
lcid, rgDispId);
|
||||
}
|
||||
|
||||
|
@ -231,7 +231,7 @@ static HRESULT WINAPI HTMLDOMTextNode2_Invoke(IHTMLDOMTextNode2 *iface, DISPID d
|
|||
EXCEPINFO *pExcepInfo, UINT *puArgErr)
|
||||
{
|
||||
HTMLDOMTextNode *This = impl_from_IHTMLDOMTextNode2(iface);
|
||||
return IDispatchEx_Invoke(&This->node.dispex.IDispatchEx_iface, dispIdMember, riid, lcid,
|
||||
return IDispatchEx_Invoke(&This->node.event_target.dispex.IDispatchEx_iface, dispIdMember, riid, lcid,
|
||||
wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
|
||||
}
|
||||
|
||||
|
@ -362,7 +362,7 @@ HRESULT HTMLDOMTextNode_Create(HTMLDocumentNode *doc, nsIDOMNode *nsnode, HTMLDO
|
|||
ret->IHTMLDOMTextNode_iface.lpVtbl = &HTMLDOMTextNodeVtbl;
|
||||
ret->IHTMLDOMTextNode2_iface.lpVtbl = &HTMLDOMTextNode2Vtbl;
|
||||
|
||||
init_dispex(&ret->node.dispex, (IUnknown*)&ret->IHTMLDOMTextNode_iface,
|
||||
init_dispex(&ret->node.event_target.dispex, (IUnknown*)&ret->IHTMLDOMTextNode_iface,
|
||||
&HTMLDOMTextNode_dispex);
|
||||
|
||||
HTMLDOMNode_Init(doc, &ret->node, nsnode);
|
||||
|
|
|
@ -71,7 +71,7 @@ static inline HRESULT set_window_event(HTMLWindow *window, eventid_t eid, VARIAN
|
|||
return E_FAIL;
|
||||
}
|
||||
|
||||
return set_event_handler(&window->inner_window->doc->body_event_target, window->inner_window->doc, eid, var);
|
||||
return set_event_handler(&window->inner_window->event_target, eid, var);
|
||||
}
|
||||
|
||||
static inline HRESULT get_window_event(HTMLWindow *window, eventid_t eid, VARIANT *var)
|
||||
|
@ -81,7 +81,7 @@ static inline HRESULT get_window_event(HTMLWindow *window, eventid_t eid, VARIAN
|
|||
return E_FAIL;
|
||||
}
|
||||
|
||||
return get_event_handler(&window->inner_window->doc->body_event_target, eid, var);
|
||||
return get_event_handler(&window->inner_window->event_target, eid, var);
|
||||
}
|
||||
|
||||
static void detach_inner_window(HTMLInnerWindow *window)
|
||||
|
@ -145,7 +145,7 @@ static HRESULT WINAPI HTMLWindow2_QueryInterface(IHTMLWindow2 *iface, REFIID rii
|
|||
*ppv = &This->ITravelLogClient_iface;
|
||||
}else if(IsEqualGUID(&IID_IObjectIdentity, riid)) {
|
||||
*ppv = &This->IObjectIdentity_iface;
|
||||
}else if(dispex_query_interface(&This->inner_window->dispex, riid, ppv)) {
|
||||
}else if(dispex_query_interface(&This->inner_window->event_target.dispex, riid, ppv)) {
|
||||
assert(!*ppv);
|
||||
return E_NOINTERFACE;
|
||||
}else {
|
||||
|
@ -211,7 +211,7 @@ static void release_inner_window(HTMLInnerWindow *This)
|
|||
htmldoc_release(&This->doc->basedoc);
|
||||
}
|
||||
|
||||
release_dispex(&This->dispex);
|
||||
release_dispex(&This->event_target.dispex);
|
||||
|
||||
for(i=0; i < This->global_prop_cnt; i++)
|
||||
heap_free(This->global_props[i].name);
|
||||
|
@ -232,6 +232,11 @@ static void release_inner_window(HTMLInnerWindow *This)
|
|||
IHTMLOptionElementFactory_Release(&This->option_factory->IHTMLOptionElementFactory_iface);
|
||||
}
|
||||
|
||||
if(This->xhr_factory) {
|
||||
This->xhr_factory->window = NULL;
|
||||
IHTMLXMLHttpRequestFactory_Release(&This->xhr_factory->IHTMLXMLHttpRequestFactory_iface);
|
||||
}
|
||||
|
||||
if(This->screen)
|
||||
IHTMLScreen_Release(This->screen);
|
||||
|
||||
|
@ -351,6 +356,11 @@ HRESULT get_frame_by_name(HTMLOuterWindow *This, const WCHAR *name, BOOL deep, H
|
|||
return E_FAIL;
|
||||
}
|
||||
|
||||
if(!nsframes) {
|
||||
WARN("nsIDOMWindow_GetFrames returned NULL nsframes: %p\n", This->nswindow);
|
||||
return DISP_E_MEMBERNOTFOUND;
|
||||
}
|
||||
|
||||
nsAString_InitDepend(&name_str, name);
|
||||
nsres = nsIDOMWindowCollection_NamedItem(nsframes, &name_str, &nswindow);
|
||||
nsAString_Finish(&name_str);
|
||||
|
@ -382,6 +392,11 @@ HRESULT get_frame_by_name(HTMLOuterWindow *This, const WCHAR *name, BOOL deep, H
|
|||
|
||||
nsIDOMWindow_Release(nswindow);
|
||||
|
||||
if(!window_iter) {
|
||||
WARN("nsIDOMWindow without HTMLOuterWindow: %p\n", nswindow);
|
||||
continue;
|
||||
}
|
||||
|
||||
hres = IHTMLElement_get_id(&window_iter->frame_element->element.IHTMLElement_iface, &id);
|
||||
if(FAILED(hres)) {
|
||||
FIXME("IHTMLElement_get_id failed: 0x%08x\n", hres);
|
||||
|
@ -1630,7 +1645,7 @@ static HRESULT WINAPI HTMLWindow3_attachEvent(IHTMLWindow3 *iface, BSTR event, I
|
|||
return E_FAIL;
|
||||
}
|
||||
|
||||
return attach_event(&window->doc->body_event_target, &window->doc->basedoc, event, pDisp, pfResult);
|
||||
return attach_event(&window->event_target, event, pDisp, pfResult);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLWindow3_detachEvent(IHTMLWindow3 *iface, BSTR event, IDispatch *pDisp)
|
||||
|
@ -1645,7 +1660,7 @@ static HRESULT WINAPI HTMLWindow3_detachEvent(IHTMLWindow3 *iface, BSTR event, I
|
|||
return E_FAIL;
|
||||
}
|
||||
|
||||
return detach_event(window->doc->body_event_target, &window->doc->basedoc, event, pDisp);
|
||||
return detach_event(&window->event_target, event, pDisp);
|
||||
}
|
||||
|
||||
static HRESULT window_set_timer(HTMLInnerWindow *This, VARIANT *expr, LONG msec, VARIANT *language,
|
||||
|
@ -1936,8 +1951,24 @@ static HRESULT WINAPI HTMLWindow5_put_XMLHttpRequest(IHTMLWindow5 *iface, VARIAN
|
|||
static HRESULT WINAPI HTMLWindow5_get_XMLHttpRequest(IHTMLWindow5 *iface, VARIANT *p)
|
||||
{
|
||||
HTMLWindow *This = impl_from_IHTMLWindow5(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
HTMLInnerWindow *window = This->inner_window;
|
||||
|
||||
TRACE("(%p)->(%p)\n", This, p);
|
||||
|
||||
if(!window->xhr_factory) {
|
||||
HRESULT hres;
|
||||
|
||||
hres = HTMLXMLHttpRequestFactory_Create(window, &window->xhr_factory);
|
||||
if(FAILED(hres)) {
|
||||
return hres;
|
||||
}
|
||||
}
|
||||
|
||||
V_VT(p) = VT_DISPATCH;
|
||||
V_DISPATCH(p) = (IDispatch*)&window->xhr_factory->IHTMLXMLHttpRequestFactory_iface;
|
||||
IDispatch_AddRef(V_DISPATCH(p));
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static const IHTMLWindow5Vtbl HTMLWindow5Vtbl = {
|
||||
|
@ -2399,7 +2430,7 @@ static HRESULT WINAPI WindowDispEx_GetTypeInfoCount(IDispatchEx *iface, UINT *pc
|
|||
|
||||
TRACE("(%p)->(%p)\n", This, pctinfo);
|
||||
|
||||
return IDispatchEx_GetTypeInfoCount(&This->inner_window->dispex.IDispatchEx_iface, pctinfo);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->inner_window->event_target.dispex.IDispatchEx_iface, pctinfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WindowDispEx_GetTypeInfo(IDispatchEx *iface, UINT iTInfo,
|
||||
|
@ -2409,7 +2440,7 @@ static HRESULT WINAPI WindowDispEx_GetTypeInfo(IDispatchEx *iface, UINT iTInfo,
|
|||
|
||||
TRACE("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ppTInfo);
|
||||
|
||||
return IDispatchEx_GetTypeInfo(&This->inner_window->dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
|
||||
return IDispatchEx_GetTypeInfo(&This->inner_window->event_target.dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WindowDispEx_GetIDsOfNames(IDispatchEx *iface, REFIID riid,
|
||||
|
@ -2443,7 +2474,7 @@ static HRESULT WINAPI WindowDispEx_Invoke(IDispatchEx *iface, DISPID dispIdMembe
|
|||
|
||||
/* FIXME: Use script dispatch */
|
||||
|
||||
return IDispatchEx_Invoke(&This->inner_window->dispex.IDispatchEx_iface, dispIdMember, riid, lcid, wFlags,
|
||||
return IDispatchEx_Invoke(&This->inner_window->event_target.dispex.IDispatchEx_iface, dispIdMember, riid, lcid, wFlags,
|
||||
pDispParams, pVarResult, pExcepInfo, puArgErr);
|
||||
}
|
||||
|
||||
|
@ -2522,7 +2553,7 @@ static HRESULT WINAPI WindowDispEx_GetDispID(IDispatchEx *iface, BSTR bstrName,
|
|||
if(hres != DISP_E_UNKNOWNNAME)
|
||||
return hres;
|
||||
|
||||
hres = IDispatchEx_GetDispID(&window->base.inner_window->dispex.IDispatchEx_iface, bstrName, grfdex, pid);
|
||||
hres = IDispatchEx_GetDispID(&window->base.inner_window->event_target.dispex.IDispatchEx_iface, bstrName, grfdex, pid);
|
||||
if(hres != DISP_E_UNKNOWNNAME)
|
||||
return hres;
|
||||
|
||||
|
@ -2589,7 +2620,7 @@ static HRESULT WINAPI WindowDispEx_InvokeEx(IDispatchEx *iface, DISPID id, LCID
|
|||
return hres;
|
||||
}
|
||||
|
||||
return IDispatchEx_InvokeEx(&window->dispex.IDispatchEx_iface, id, lcid, wFlags, pdp, pvarRes, pei, pspCaller);
|
||||
return IDispatchEx_InvokeEx(&window->event_target.dispex.IDispatchEx_iface, id, lcid, wFlags, pdp, pvarRes, pei, pspCaller);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WindowDispEx_DeleteMemberByName(IDispatchEx *iface, BSTR bstrName, DWORD grfdex)
|
||||
|
@ -2598,7 +2629,7 @@ static HRESULT WINAPI WindowDispEx_DeleteMemberByName(IDispatchEx *iface, BSTR b
|
|||
|
||||
TRACE("(%p)->(%s %x)\n", This, debugstr_w(bstrName), grfdex);
|
||||
|
||||
return IDispatchEx_DeleteMemberByName(&This->inner_window->dispex.IDispatchEx_iface, bstrName, grfdex);
|
||||
return IDispatchEx_DeleteMemberByName(&This->inner_window->event_target.dispex.IDispatchEx_iface, bstrName, grfdex);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WindowDispEx_DeleteMemberByDispID(IDispatchEx *iface, DISPID id)
|
||||
|
@ -2607,7 +2638,7 @@ static HRESULT WINAPI WindowDispEx_DeleteMemberByDispID(IDispatchEx *iface, DISP
|
|||
|
||||
TRACE("(%p)->(%x)\n", This, id);
|
||||
|
||||
return IDispatchEx_DeleteMemberByDispID(&This->inner_window->dispex.IDispatchEx_iface, id);
|
||||
return IDispatchEx_DeleteMemberByDispID(&This->inner_window->event_target.dispex.IDispatchEx_iface, id);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WindowDispEx_GetMemberProperties(IDispatchEx *iface, DISPID id, DWORD grfdexFetch, DWORD *pgrfdex)
|
||||
|
@ -2616,7 +2647,7 @@ static HRESULT WINAPI WindowDispEx_GetMemberProperties(IDispatchEx *iface, DISPI
|
|||
|
||||
TRACE("(%p)->(%x %x %p)\n", This, id, grfdexFetch, pgrfdex);
|
||||
|
||||
return IDispatchEx_GetMemberProperties(&This->inner_window->dispex.IDispatchEx_iface, id, grfdexFetch,
|
||||
return IDispatchEx_GetMemberProperties(&This->inner_window->event_target.dispex.IDispatchEx_iface, id, grfdexFetch,
|
||||
pgrfdex);
|
||||
}
|
||||
|
||||
|
@ -2626,7 +2657,7 @@ static HRESULT WINAPI WindowDispEx_GetMemberName(IDispatchEx *iface, DISPID id,
|
|||
|
||||
TRACE("(%p)->(%x %p)\n", This, id, pbstrName);
|
||||
|
||||
return IDispatchEx_GetMemberName(&This->inner_window->dispex.IDispatchEx_iface, id, pbstrName);
|
||||
return IDispatchEx_GetMemberName(&This->inner_window->event_target.dispex.IDispatchEx_iface, id, pbstrName);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WindowDispEx_GetNextDispID(IDispatchEx *iface, DWORD grfdex, DISPID id, DISPID *pid)
|
||||
|
@ -2635,7 +2666,7 @@ static HRESULT WINAPI WindowDispEx_GetNextDispID(IDispatchEx *iface, DWORD grfde
|
|||
|
||||
TRACE("(%p)->(%x %x %p)\n", This, grfdex, id, pid);
|
||||
|
||||
return IDispatchEx_GetNextDispID(&This->inner_window->dispex.IDispatchEx_iface, grfdex, id, pid);
|
||||
return IDispatchEx_GetNextDispID(&This->inner_window->event_target.dispex.IDispatchEx_iface, grfdex, id, pid);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI WindowDispEx_GetNameSpaceParent(IDispatchEx *iface, IUnknown **ppunk)
|
||||
|
@ -2716,7 +2747,7 @@ static const IServiceProviderVtbl ServiceProviderVtbl = {
|
|||
|
||||
static inline HTMLInnerWindow *impl_from_DispatchEx(DispatchEx *iface)
|
||||
{
|
||||
return CONTAINING_RECORD(iface, HTMLInnerWindow, dispex);
|
||||
return CONTAINING_RECORD(iface, HTMLInnerWindow, event_target.dispex);
|
||||
}
|
||||
|
||||
static HRESULT HTMLWindow_invoke(DispatchEx *dispex, DISPID id, LCID lcid, WORD flags, DISPPARAMS *params,
|
||||
|
@ -2778,13 +2809,13 @@ static HRESULT HTMLWindow_invoke(DispatchEx *dispex, DISPID id, LCID lcid, WORD
|
|||
case DISPATCH_PROPERTYPUT: {
|
||||
DISPID dispex_id;
|
||||
|
||||
hres = dispex_get_dynid(&This->dispex, prop->name, &dispex_id);
|
||||
hres = dispex_get_dynid(&This->event_target.dispex, prop->name, &dispex_id);
|
||||
if(FAILED(hres))
|
||||
return hres;
|
||||
|
||||
prop->type = GLOBAL_DISPEXVAR;
|
||||
prop->id = dispex_id;
|
||||
return IDispatchEx_InvokeEx(&This->dispex.IDispatchEx_iface, dispex_id, 0, flags, params, res, ei, caller);
|
||||
return IDispatchEx_InvokeEx(&This->event_target.dispex.IDispatchEx_iface, dispex_id, 0, flags, params, res, ei, caller);
|
||||
}
|
||||
default:
|
||||
FIXME("Not supported flags: %x\n", flags);
|
||||
|
@ -2815,7 +2846,7 @@ static HRESULT HTMLWindow_invoke(DispatchEx *dispex, DISPID id, LCID lcid, WORD
|
|||
return E_NOTIMPL;
|
||||
}
|
||||
case GLOBAL_DISPEXVAR:
|
||||
return IDispatchEx_InvokeEx(&This->dispex.IDispatchEx_iface, prop->id, 0, flags, params, res, ei, caller);
|
||||
return IDispatchEx_InvokeEx(&This->event_target.dispex.IDispatchEx_iface, prop->id, 0, flags, params, res, ei, caller);
|
||||
default:
|
||||
ERR("invalid type %d\n", prop->type);
|
||||
hres = DISP_E_MEMBERNOTFOUND;
|
||||
|
@ -2824,12 +2855,25 @@ static HRESULT HTMLWindow_invoke(DispatchEx *dispex, DISPID id, LCID lcid, WORD
|
|||
return hres;
|
||||
}
|
||||
|
||||
static event_target_t **HTMLWindow_get_event_target_ptr(DispatchEx *dispex)
|
||||
{
|
||||
HTMLInnerWindow *This = impl_from_DispatchEx(dispex);
|
||||
return &This->doc->body_event_target;
|
||||
}
|
||||
|
||||
static void HTMLWindow_bind_event(DispatchEx *dispex, int eid)
|
||||
{
|
||||
HTMLInnerWindow *This = impl_from_DispatchEx(dispex);
|
||||
This->doc->node.event_target.dispex.data->vtbl->bind_event(&This->doc->node.event_target.dispex, eid);
|
||||
}
|
||||
|
||||
static const dispex_static_data_vtbl_t HTMLWindow_dispex_vtbl = {
|
||||
NULL,
|
||||
NULL,
|
||||
HTMLWindow_invoke,
|
||||
NULL
|
||||
NULL,
|
||||
HTMLWindow_get_event_target_ptr,
|
||||
HTMLWindow_bind_event
|
||||
};
|
||||
|
||||
static const tid_t HTMLWindow_iface_tids[] = {
|
||||
|
@ -2885,7 +2929,7 @@ static HRESULT create_inner_window(HTMLOuterWindow *outer_window, IMoniker *mon,
|
|||
window->base.outer_window = outer_window;
|
||||
window->base.inner_window = window;
|
||||
|
||||
init_dispex(&window->dispex, (IUnknown*)&window->base.IHTMLWindow2_iface, &HTMLWindow_dispex);
|
||||
init_dispex(&window->event_target.dispex, (IUnknown*)&window->base.IHTMLWindow2_iface, &HTMLWindow_dispex);
|
||||
|
||||
window->task_magic = get_task_target_magic();
|
||||
|
||||
|
|
|
@ -539,6 +539,7 @@ const char *debugstr_mshtml_guid(const GUID *iid)
|
|||
X(DIID_HTMLDocumentEvents2);
|
||||
X(DIID_HTMLTableEvents);
|
||||
X(DIID_HTMLTextContainerEvents);
|
||||
X(IID_HTMLPluginContainer);
|
||||
X(IID_IConnectionPoint);
|
||||
X(IID_IConnectionPointContainer);
|
||||
X(IID_ICustomDoc);
|
||||
|
@ -551,6 +552,7 @@ const char *debugstr_mshtml_guid(const GUID *iid)
|
|||
X(IID_IHlinkTarget);
|
||||
X(IID_IHTMLDocument6);
|
||||
X(IID_IHTMLDocument7);
|
||||
X(IID_IHTMLEditServices);
|
||||
X(IID_IHTMLFramesCollection2);
|
||||
X(IID_IHTMLPrivateWindow);
|
||||
X(IID_IHtmlLoadOptions);
|
||||
|
|
|
@ -62,7 +62,7 @@
|
|||
WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
|
||||
|
||||
#define NS_ERROR_GENERATE_FAILURE(module,code) \
|
||||
((nsresult) (((UINT32)(1<<31)) | ((UINT32)(module+0x45)<<16) | ((UINT32)(code))))
|
||||
((nsresult) (((UINT32)(1u<<31)) | ((UINT32)(module+0x45)<<16) | ((UINT32)(code))))
|
||||
|
||||
#define NS_OK ((nsresult)0x00000000L)
|
||||
#define NS_ERROR_FAILURE ((nsresult)0x80004005L)
|
||||
|
@ -98,6 +98,7 @@ typedef struct event_target_t event_target_t;
|
|||
XDIID(DispCPlugins) \
|
||||
XDIID(DispDOMChildrenCollection) \
|
||||
XDIID(DispHTMLAnchorElement) \
|
||||
XDIID(DispHTMLAreaElement) \
|
||||
XDIID(DispHTMLAttributeCollection) \
|
||||
XDIID(DispHTMLBody) \
|
||||
XDIID(DispHTMLButtonElement) \
|
||||
|
@ -138,9 +139,11 @@ typedef struct event_target_t event_target_t;
|
|||
XDIID(DispHTMLTitleElement) \
|
||||
XDIID(DispHTMLUnknownElement) \
|
||||
XDIID(DispHTMLWindow2) \
|
||||
XDIID(DispHTMLXMLHttpRequest) \
|
||||
XDIID(HTMLDocumentEvents) \
|
||||
XDIID(HTMLElementEvents2) \
|
||||
XIID(IHTMLAnchorElement) \
|
||||
XIID(IHTMLAreaElement) \
|
||||
XIID(IHTMLAttributeCollection) \
|
||||
XIID(IHTMLAttributeCollection2) \
|
||||
XIID(IHTMLAttributeCollection3) \
|
||||
|
@ -157,6 +160,7 @@ typedef struct event_target_t event_target_t;
|
|||
XIID(IHTMLDocument4) \
|
||||
XIID(IHTMLDocument5) \
|
||||
XIID(IHTMLDOMAttribute) \
|
||||
XIID(IHTMLDOMAttribute2) \
|
||||
XIID(IHTMLDOMChildrenCollection) \
|
||||
XIID(IHTMLDOMImplementation) \
|
||||
XIID(IHTMLDOMNode) \
|
||||
|
@ -198,6 +202,7 @@ typedef struct event_target_t event_target_t;
|
|||
XIID(IHTMLScriptElement) \
|
||||
XIID(IHTMLSelectElement) \
|
||||
XIID(IHTMLSelectionObject) \
|
||||
XIID(IHTMLSelectionObject2) \
|
||||
XIID(IHTMLStorage) \
|
||||
XIID(IHTMLStyle) \
|
||||
XIID(IHTMLStyle2) \
|
||||
|
@ -224,6 +229,8 @@ typedef struct event_target_t event_target_t;
|
|||
XIID(IHTMLWindow4) \
|
||||
XIID(IHTMLWindow5) \
|
||||
XIID(IHTMLWindow6) \
|
||||
XIID(IHTMLXMLHttpRequest) \
|
||||
XIID(IHTMLXMLHttpRequestFactory) \
|
||||
XIID(IOmHistory) \
|
||||
XIID(IOmNavigator)
|
||||
|
||||
|
@ -250,6 +257,9 @@ typedef struct {
|
|||
HRESULT (*get_dispid)(DispatchEx*,BSTR,DWORD,DISPID*);
|
||||
HRESULT (*invoke)(DispatchEx*,DISPID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,IServiceProvider*);
|
||||
HRESULT (*populate_props)(DispatchEx*);
|
||||
/* We abuse this vtbl for EventTarget functions to avoid separated vtbl. */
|
||||
event_target_t **(*get_event_target_ptr)(DispatchEx*);
|
||||
void (*bind_event)(DispatchEx*,int);
|
||||
} dispex_static_data_vtbl_t;
|
||||
|
||||
typedef struct {
|
||||
|
@ -288,12 +298,12 @@ typedef struct {
|
|||
|
||||
DEFINE_GUID(IID_nsXPCOMCycleCollectionParticipant, 0x9674489b,0x1f6f,0x4550,0xa7,0x30, 0xcc,0xae,0xdd,0x10,0x4c,0xf9);
|
||||
|
||||
nsrefcnt (__cdecl *ccref_incr)(nsCycleCollectingAutoRefCnt*,nsISupports*);
|
||||
nsrefcnt (__cdecl *ccref_decr)(nsCycleCollectingAutoRefCnt*,nsISupports*,ExternalCycleCollectionParticipant*);
|
||||
void (__cdecl *ccref_init)(nsCycleCollectingAutoRefCnt*,nsrefcnt);
|
||||
void (__cdecl *ccp_init)(ExternalCycleCollectionParticipant*,const CCObjCallback*);
|
||||
void (__cdecl *describe_cc_node)(nsCycleCollectingAutoRefCnt*,const char*,nsCycleCollectionTraversalCallback*);
|
||||
void (__cdecl *note_cc_edge)(nsISupports*,const char*,nsCycleCollectionTraversalCallback*);
|
||||
nsrefcnt (__cdecl *ccref_incr)(nsCycleCollectingAutoRefCnt*,nsISupports*) DECLSPEC_HIDDEN;
|
||||
nsrefcnt (__cdecl *ccref_decr)(nsCycleCollectingAutoRefCnt*,nsISupports*,ExternalCycleCollectionParticipant*) DECLSPEC_HIDDEN;
|
||||
void (__cdecl *ccref_init)(nsCycleCollectingAutoRefCnt*,nsrefcnt) DECLSPEC_HIDDEN;
|
||||
void (__cdecl *ccp_init)(ExternalCycleCollectionParticipant*,const CCObjCallback*) DECLSPEC_HIDDEN;
|
||||
void (__cdecl *describe_cc_node)(nsCycleCollectingAutoRefCnt*,const char*,nsCycleCollectionTraversalCallback*) DECLSPEC_HIDDEN;
|
||||
void (__cdecl *note_cc_edge)(nsISupports*,const char*,nsCycleCollectionTraversalCallback*) DECLSPEC_HIDDEN;
|
||||
|
||||
void init_dispex(DispatchEx*,IUnknown*,dispex_static_data_t*) DECLSPEC_HIDDEN;
|
||||
void release_dispex(DispatchEx*) DECLSPEC_HIDDEN;
|
||||
|
@ -345,6 +355,11 @@ typedef struct {
|
|||
DISPID id;
|
||||
} global_prop_t;
|
||||
|
||||
typedef struct {
|
||||
DispatchEx dispex;
|
||||
event_target_t *ptr;
|
||||
} EventTarget;
|
||||
|
||||
typedef struct {
|
||||
DispatchEx dispex;
|
||||
IHTMLOptionElementFactory IHTMLOptionElementFactory_iface;
|
||||
|
@ -363,6 +378,15 @@ typedef struct {
|
|||
HTMLInnerWindow *window;
|
||||
} HTMLImageElementFactory;
|
||||
|
||||
typedef struct {
|
||||
DispatchEx dispex;
|
||||
IHTMLXMLHttpRequestFactory IHTMLXMLHttpRequestFactory_iface;
|
||||
|
||||
LONG ref;
|
||||
|
||||
HTMLInnerWindow *window;
|
||||
} HTMLXMLHttpRequestFactory;
|
||||
|
||||
struct HTMLLocation {
|
||||
DispatchEx dispex;
|
||||
IHTMLLocation IHTMLLocation_iface;
|
||||
|
@ -439,7 +463,7 @@ struct HTMLOuterWindow {
|
|||
|
||||
struct HTMLInnerWindow {
|
||||
HTMLWindow base;
|
||||
DispatchEx dispex;
|
||||
EventTarget event_target;
|
||||
|
||||
HTMLDocumentNode *doc;
|
||||
|
||||
|
@ -449,6 +473,7 @@ struct HTMLInnerWindow {
|
|||
|
||||
HTMLImageElementFactory *image_factory;
|
||||
HTMLOptionElementFactory *option_factory;
|
||||
HTMLXMLHttpRequestFactory *xhr_factory;
|
||||
IHTMLScreen *screen;
|
||||
OmHistory *history;
|
||||
IHTMLStorage *session_storage;
|
||||
|
@ -599,6 +624,7 @@ struct HTMLDocumentObj {
|
|||
DOCHOSTUIINFO hostinfo;
|
||||
|
||||
IOleUndoManager *undomgr;
|
||||
IHTMLEditServices *editsvcs;
|
||||
|
||||
HWND hwnd;
|
||||
HWND tooltips_hwnd;
|
||||
|
@ -657,7 +683,7 @@ typedef struct {
|
|||
HRESULT (*clone)(HTMLDOMNode*,nsIDOMNode*,HTMLDOMNode**);
|
||||
HRESULT (*handle_event)(HTMLDOMNode*,DWORD,nsIDOMEvent*,BOOL*);
|
||||
HRESULT (*get_attr_col)(HTMLDOMNode*,HTMLAttributeCollection**);
|
||||
event_target_t **(*get_event_target)(HTMLDOMNode*);
|
||||
event_target_t **(*get_event_target_ptr)(HTMLDOMNode*);
|
||||
HRESULT (*fire_event)(HTMLDOMNode*,DWORD,BOOL*);
|
||||
HRESULT (*put_disabled)(HTMLDOMNode*,VARIANT_BOOL);
|
||||
HRESULT (*get_disabled)(HTMLDOMNode*,VARIANT_BOOL*);
|
||||
|
@ -672,7 +698,7 @@ typedef struct {
|
|||
} NodeImplVtbl;
|
||||
|
||||
struct HTMLDOMNode {
|
||||
DispatchEx dispex;
|
||||
EventTarget event_target;
|
||||
IHTMLDOMNode IHTMLDOMNode_iface;
|
||||
IHTMLDOMNode2 IHTMLDOMNode2_iface;
|
||||
const NodeImplVtbl *vtbl;
|
||||
|
@ -681,7 +707,6 @@ struct HTMLDOMNode {
|
|||
|
||||
nsIDOMNode *nsnode;
|
||||
HTMLDocumentNode *doc;
|
||||
event_target_t *event_target;
|
||||
ConnectionPointContainer *cp_container;
|
||||
};
|
||||
|
||||
|
@ -719,9 +744,9 @@ typedef struct {
|
|||
IHTMLElement3_tid, \
|
||||
IHTMLElement4_tid
|
||||
|
||||
extern cp_static_data_t HTMLElementEvents2_data;
|
||||
extern cp_static_data_t HTMLElementEvents2_data DECLSPEC_HIDDEN;
|
||||
#define HTMLELEMENT_CPC {&DIID_HTMLElementEvents2, &HTMLElementEvents2_data}
|
||||
extern const cpc_entry_t HTMLElement_cpc[];
|
||||
extern const cpc_entry_t HTMLElement_cpc[] DECLSPEC_HIDDEN;
|
||||
|
||||
typedef struct {
|
||||
HTMLElement element;
|
||||
|
@ -788,6 +813,7 @@ HTMLOuterWindow *nswindow_to_window(const nsIDOMWindow*) DECLSPEC_HIDDEN;
|
|||
void get_top_window(HTMLOuterWindow*,HTMLOuterWindow**) DECLSPEC_HIDDEN;
|
||||
HRESULT HTMLOptionElementFactory_Create(HTMLInnerWindow*,HTMLOptionElementFactory**) DECLSPEC_HIDDEN;
|
||||
HRESULT HTMLImageElementFactory_Create(HTMLInnerWindow*,HTMLImageElementFactory**) DECLSPEC_HIDDEN;
|
||||
HRESULT HTMLXMLHttpRequestFactory_Create(HTMLInnerWindow*,HTMLXMLHttpRequestFactory**) DECLSPEC_HIDDEN;
|
||||
HRESULT HTMLLocation_Create(HTMLInnerWindow*,HTMLLocation**) DECLSPEC_HIDDEN;
|
||||
IOmNavigator *OmNavigator_Create(void) DECLSPEC_HIDDEN;
|
||||
HRESULT HTMLScreen_Create(IHTMLScreen**) DECLSPEC_HIDDEN;
|
||||
|
@ -854,6 +880,7 @@ HRESULT call_set_active_object(IOleInPlaceUIWindow*,IOleInPlaceActiveObject*) DE
|
|||
void *nsalloc(size_t) __WINE_ALLOC_SIZE(1) DECLSPEC_HIDDEN;
|
||||
void nsfree(void*) DECLSPEC_HIDDEN;
|
||||
|
||||
BOOL nsACString_Init(nsACString *str, const char *data) DECLSPEC_HIDDEN;
|
||||
void nsACString_InitDepend(nsACString*,const char*) DECLSPEC_HIDDEN;
|
||||
void nsACString_SetData(nsACString*,const char*) DECLSPEC_HIDDEN;
|
||||
UINT32 nsACString_GetData(const nsACString*,const char**) DECLSPEC_HIDDEN;
|
||||
|
@ -877,6 +904,7 @@ HRESULT nsnode_to_nsstring(nsIDOMNode*,nsAString*) DECLSPEC_HIDDEN;
|
|||
void get_editor_controller(NSContainer*) DECLSPEC_HIDDEN;
|
||||
nsresult get_nsinterface(nsISupports*,REFIID,void**) DECLSPEC_HIDDEN;
|
||||
nsIWritableVariant *create_nsvariant(void) DECLSPEC_HIDDEN;
|
||||
nsIXMLHttpRequest *create_nsxhr(nsIDOMWindow *nswindow) DECLSPEC_HIDDEN;
|
||||
nsresult create_nsfile(const PRUnichar*,nsIFile**) DECLSPEC_HIDDEN;
|
||||
char *get_nscategory_entry(const char*,const char*) DECLSPEC_HIDDEN;
|
||||
|
||||
|
@ -900,8 +928,6 @@ void detach_ranges(HTMLDocumentNode*) DECLSPEC_HIDDEN;
|
|||
HRESULT get_node_text(HTMLDOMNode*,BSTR*) DECLSPEC_HIDDEN;
|
||||
HRESULT replace_node_by_html(nsIDOMHTMLDocument*,nsIDOMNode*,const WCHAR*) DECLSPEC_HIDDEN;
|
||||
|
||||
HRESULT insert_adjacent_node(HTMLElement*,const WCHAR*,nsIDOMNode*,HTMLDOMNode**) DECLSPEC_HIDDEN;
|
||||
|
||||
HRESULT create_nselem(HTMLDocumentNode*,const WCHAR*,nsIDOMHTMLElement**) DECLSPEC_HIDDEN;
|
||||
HRESULT create_element(HTMLDocumentNode*,const WCHAR*,HTMLElement**) DECLSPEC_HIDDEN;
|
||||
|
||||
|
@ -926,6 +952,7 @@ struct HTMLAttributeCollection {
|
|||
typedef struct {
|
||||
DispatchEx dispex;
|
||||
IHTMLDOMAttribute IHTMLDOMAttribute_iface;
|
||||
IHTMLDOMAttribute2 IHTMLDOMAttribute2_iface;
|
||||
|
||||
LONG ref;
|
||||
|
||||
|
@ -941,6 +968,7 @@ HRESULT HTMLDOMAttribute_Create(const WCHAR*,HTMLElement*,DISPID,HTMLDOMAttribut
|
|||
HRESULT HTMLElement_Create(HTMLDocumentNode*,nsIDOMNode*,BOOL,HTMLElement**) DECLSPEC_HIDDEN;
|
||||
HRESULT HTMLCommentElement_Create(HTMLDocumentNode*,nsIDOMNode*,HTMLElement**) DECLSPEC_HIDDEN;
|
||||
HRESULT HTMLAnchorElement_Create(HTMLDocumentNode*,nsIDOMHTMLElement*,HTMLElement**) DECLSPEC_HIDDEN;
|
||||
HRESULT HTMLAreaElement_Create(HTMLDocumentNode*,nsIDOMHTMLElement*,HTMLElement**) DECLSPEC_HIDDEN;
|
||||
HRESULT HTMLBodyElement_Create(HTMLDocumentNode*,nsIDOMHTMLElement*,HTMLElement**) DECLSPEC_HIDDEN;
|
||||
HRESULT HTMLButtonElement_Create(HTMLDocumentNode*,nsIDOMHTMLElement*,HTMLElement**) DECLSPEC_HIDDEN;
|
||||
HRESULT HTMLEmbedElement_Create(HTMLDocumentNode*,nsIDOMHTMLElement*,HTMLElement**) DECLSPEC_HIDDEN;
|
||||
|
@ -991,12 +1019,19 @@ HRESULT search_window_props(HTMLInnerWindow*,BSTR,DWORD,DISPID*) DECLSPEC_HIDDEN
|
|||
HRESULT get_frame_by_name(HTMLOuterWindow*,const WCHAR*,BOOL,HTMLOuterWindow**) DECLSPEC_HIDDEN;
|
||||
HRESULT get_doc_elem_by_id(HTMLDocumentNode*,const WCHAR*,HTMLElement**) DECLSPEC_HIDDEN;
|
||||
HTMLOuterWindow *get_target_window(HTMLOuterWindow*,nsAString*,BOOL*) DECLSPEC_HIDDEN;
|
||||
HRESULT handle_link_click_event(HTMLElement*,nsAString*,nsAString*,nsIDOMEvent*,BOOL*) DECLSPEC_HIDDEN;
|
||||
|
||||
HRESULT wrap_iface(IUnknown*,IUnknown*,IUnknown**) DECLSPEC_HIDDEN;
|
||||
|
||||
IHTMLElementCollection *create_all_collection(HTMLDOMNode*,BOOL) DECLSPEC_HIDDEN;
|
||||
IHTMLElementCollection *create_collection_from_nodelist(HTMLDocumentNode*,nsIDOMNodeList*) DECLSPEC_HIDDEN;
|
||||
IHTMLElementCollection *create_collection_from_htmlcol(HTMLDocumentNode*,nsIDOMHTMLCollection*) DECLSPEC_HIDDEN;
|
||||
|
||||
#define ATTRFLAG_CASESENSITIVE 0x0001
|
||||
#define ATTRFLAG_ASSTRING 0x0002
|
||||
#define ATTRFLAG_EXPANDURL 0x0004
|
||||
|
||||
HRESULT get_elem_attr_value_by_dispid(HTMLElement*,DISPID,DWORD,VARIANT*) DECLSPEC_HIDDEN;
|
||||
HRESULT get_elem_source_index(HTMLElement*,LONG*) DECLSPEC_HIDDEN;
|
||||
|
||||
nsresult get_elem_attr_value(nsIDOMHTMLElement*,const WCHAR*,nsAString*,const PRUnichar**) DECLSPEC_HIDDEN;
|
||||
|
@ -1222,6 +1257,23 @@ static inline char *heap_strdupWtoU(const WCHAR *str)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static inline char *heap_strndupWtoU(LPCWSTR str, unsigned len)
|
||||
{
|
||||
char *ret = NULL;
|
||||
DWORD size;
|
||||
|
||||
if(str && len) {
|
||||
size = WideCharToMultiByte(CP_UTF8, 0, str, len, NULL, 0, NULL, NULL);
|
||||
ret = heap_alloc(size + 1);
|
||||
if(ret) {
|
||||
WideCharToMultiByte(CP_UTF8, 0, str, len, ret, size, NULL, NULL);
|
||||
ret[size] = '\0';
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static inline void windowref_addref(windowref_t *ref)
|
||||
{
|
||||
InterlockedIncrement(&ref->ref);
|
||||
|
|
|
@ -916,6 +916,8 @@ static HRESULT on_start_nsrequest(nsChannelBSC *This)
|
|||
}
|
||||
|
||||
if(This->is_doc_channel) {
|
||||
if(!This->bsc.window)
|
||||
return E_ABORT; /* Binding aborted in OnStartRequest call. */
|
||||
update_window_doc(This->bsc.window);
|
||||
if(This->bsc.window->base.outer_window->readystate != READYSTATE_LOADING)
|
||||
set_ready_state(This->bsc.window->base.outer_window, READYSTATE_LOADING);
|
||||
|
@ -1030,7 +1032,9 @@ static HRESULT read_stream_data(nsChannelBSC *This, IStream *stream)
|
|||
return E_OUTOFMEMORY;
|
||||
}
|
||||
|
||||
on_start_nsrequest(This);
|
||||
hres = on_start_nsrequest(This);
|
||||
if(FAILED(hres))
|
||||
return hres;
|
||||
}
|
||||
|
||||
nsres = nsIStreamListener_OnDataAvailable(This->nslistener,
|
||||
|
@ -1110,7 +1114,7 @@ static nsrefcnt NSAPI nsAsyncVerifyRedirectCallback_Release(nsIAsyncVerifyRedire
|
|||
return ref;
|
||||
}
|
||||
|
||||
static nsresult NSAPI nsAsyncVerifyRedirectCallback_AsyncOnChannelRedirect(nsIAsyncVerifyRedirectCallback *iface, nsresult result)
|
||||
static nsresult NSAPI nsAsyncVerifyRedirectCallback_OnRedirectVerifyCallback(nsIAsyncVerifyRedirectCallback *iface, nsresult result)
|
||||
{
|
||||
nsRedirectCallback *This = impl_from_nsIAsyncVerifyRedirectCallback(iface);
|
||||
nsChannel *old_nschannel;
|
||||
|
@ -1157,7 +1161,7 @@ static const nsIAsyncVerifyRedirectCallbackVtbl nsAsyncVerifyRedirectCallbackVtb
|
|||
nsAsyncVerifyRedirectCallback_QueryInterface,
|
||||
nsAsyncVerifyRedirectCallback_AddRef,
|
||||
nsAsyncVerifyRedirectCallback_Release,
|
||||
nsAsyncVerifyRedirectCallback_AsyncOnChannelRedirect
|
||||
nsAsyncVerifyRedirectCallback_OnRedirectVerifyCallback
|
||||
};
|
||||
|
||||
static HRESULT create_redirect_callback(nsChannel *nschannel, nsChannelBSC *bsc, nsRedirectCallback **ret)
|
||||
|
@ -1572,10 +1576,29 @@ static HRESULT nsChannelBSC_on_progress(BSCallback *bsc, ULONG status_code, LPCW
|
|||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT process_response_status_text(const WCHAR *header, const WCHAR *header_end, char **status_text)
|
||||
{
|
||||
header = strchrW(header + 1, ' ');
|
||||
if(!header || header >= header_end)
|
||||
return E_FAIL;
|
||||
header = strchrW(header + 1, ' ');
|
||||
if(!header || header >= header_end)
|
||||
return E_FAIL;
|
||||
++header;
|
||||
|
||||
*status_text = heap_strndupWtoU(header, header_end - header);
|
||||
|
||||
if(!*status_text)
|
||||
return E_OUTOFMEMORY;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT nsChannelBSC_on_response(BSCallback *bsc, DWORD response_code,
|
||||
LPCWSTR response_headers)
|
||||
{
|
||||
nsChannelBSC *This = nsChannelBSC_from_BSCallback(bsc);
|
||||
char *str;
|
||||
HRESULT hres;
|
||||
|
||||
This->response_processed = TRUE;
|
||||
|
@ -1585,6 +1608,15 @@ static HRESULT nsChannelBSC_on_response(BSCallback *bsc, DWORD response_code,
|
|||
const WCHAR *headers;
|
||||
|
||||
headers = strchrW(response_headers, '\r');
|
||||
hres = process_response_status_text(response_headers, headers, &str);
|
||||
if(FAILED(hres)) {
|
||||
WARN("parsing headers failed: %08x\n", hres);
|
||||
return hres;
|
||||
}
|
||||
|
||||
heap_free(This->nschannel->response_status_text);
|
||||
This->nschannel->response_status_text = str;
|
||||
|
||||
if(headers && headers[1] == '\n') {
|
||||
headers += 2;
|
||||
hres = process_response_headers(This, headers);
|
||||
|
@ -2300,7 +2332,7 @@ static HRESULT translate_uri(HTMLOuterWindow *window, IUri *orig_uri, BSTR *ret_
|
|||
|
||||
hres = IDocHostUIHandler_TranslateUrl(window->doc_obj->hostui, 0, display_uri,
|
||||
&translated_url);
|
||||
if(hres == S_OK) {
|
||||
if(hres == S_OK && translated_url) {
|
||||
TRACE("%08x %s -> %s\n", hres, debugstr_w(display_uri), debugstr_w(translated_url));
|
||||
SysFreeString(display_uri);
|
||||
hres = create_uri(translated_url, 0, &uri);
|
||||
|
|
|
@ -25,13 +25,14 @@ WINE_DECLARE_DEBUG_CHANNEL(gecko);
|
|||
|
||||
#define NS_APPSTARTUPNOTIFIER_CONTRACTID "@mozilla.org/embedcomp/appstartup-notifier;1"
|
||||
#define NS_WEBBROWSER_CONTRACTID "@mozilla.org/embedding/browser/nsWebBrowser;1"
|
||||
#define NS_MEMORY_CONTRACTID "@mozilla.org/xpcom/memory-service;1"
|
||||
#define NS_COMMANDPARAMS_CONTRACTID "@mozilla.org/embedcomp/command-params;1"
|
||||
#define NS_HTMLSERIALIZER_CONTRACTID "@mozilla.org/layout/contentserializer;1?mimetype=text/html"
|
||||
#define NS_EDITORCONTROLLER_CONTRACTID "@mozilla.org/editor/editorcontroller;1"
|
||||
#define NS_PREFERENCES_CONTRACTID "@mozilla.org/preferences;1"
|
||||
#define NS_VARIANT_CONTRACTID "@mozilla.org/variant;1"
|
||||
#define NS_CATEGORYMANAGER_CONTRACTID "@mozilla.org/categorymanager;1"
|
||||
#define NS_XMLHTTPREQUEST_CONTRACTID "@mozilla.org/xmlextras/xmlhttprequest;1"
|
||||
#define NS_SCRIPTSECURITYMANAGER_CONTRACTID "@mozilla.org/scriptsecuritymanager;1"
|
||||
|
||||
#define PR_UINT32_MAX 0xffffffff
|
||||
|
||||
|
@ -52,13 +53,14 @@ static nsresult (CDECL *NS_CStringSetData)(nsACString*,const char*,PRUint32);
|
|||
static nsresult (CDECL *NS_NewLocalFile)(const nsAString*,cpp_bool,nsIFile**);
|
||||
static PRUint32 (CDECL *NS_StringGetData)(const nsAString*,const PRUnichar **,cpp_bool*);
|
||||
static PRUint32 (CDECL *NS_CStringGetData)(const nsACString*,const char**,cpp_bool*);
|
||||
static void* (CDECL *NS_Alloc)(SIZE_T);
|
||||
static void (CDECL *NS_Free)(void*);
|
||||
|
||||
static HINSTANCE xul_handle = NULL;
|
||||
|
||||
static nsIServiceManager *pServMgr = NULL;
|
||||
static nsIComponentManager *pCompMgr = NULL;
|
||||
static nsICategoryManager *cat_mgr;
|
||||
static nsIMemory *nsmem = NULL;
|
||||
static nsIFile *profile_directory, *plugin_directory;
|
||||
|
||||
static const WCHAR wszNsContainer[] = {'N','s','C','o','n','t','a','i','n','e','r',0};
|
||||
|
@ -464,6 +466,7 @@ static void set_environment(LPCWSTR gre_path)
|
|||
strcpyW(path+len, gre_path);
|
||||
SetEnvironmentVariableW(pathW, path);
|
||||
}
|
||||
heap_free(path);
|
||||
}
|
||||
|
||||
static BOOL load_xul(const PRUnichar *gre_path)
|
||||
|
@ -501,14 +504,8 @@ static BOOL load_xul(const PRUnichar *gre_path)
|
|||
NS_DLSYM(NS_NewLocalFile);
|
||||
NS_DLSYM(NS_StringGetData);
|
||||
NS_DLSYM(NS_CStringGetData);
|
||||
|
||||
#undef NS_DLSYM
|
||||
|
||||
#define NS_DLSYM(func) \
|
||||
func = (void *)GetProcAddress(xul_handle, #func); \
|
||||
if(!func) \
|
||||
ERR("Could not GetProcAddress(" #func ") failed\n")
|
||||
|
||||
NS_DLSYM(NS_Alloc);
|
||||
NS_DLSYM(NS_Free);
|
||||
NS_DLSYM(ccref_incr);
|
||||
NS_DLSYM(ccref_decr);
|
||||
NS_DLSYM(ccref_init);
|
||||
|
@ -718,11 +715,6 @@ static BOOL init_xpcom(const PRUnichar *gre_path)
|
|||
init_mutation(pCompMgr);
|
||||
set_preferences();
|
||||
|
||||
nsres = nsIComponentManager_CreateInstanceByContractID(pCompMgr, NS_MEMORY_CONTRACTID,
|
||||
NULL, &IID_nsIMemory, (void**)&nsmem);
|
||||
if(NS_FAILED(nsres))
|
||||
ERR("Could not get nsIMemory: %08x\n", nsres);
|
||||
|
||||
nsres = nsIServiceManager_GetServiceByContractID(pServMgr, NS_CATEGORYMANAGER_CONTRACTID,
|
||||
&IID_nsICategoryManager, (void**)&cat_mgr);
|
||||
if(NS_FAILED(nsres))
|
||||
|
@ -785,15 +777,15 @@ BOOL load_gecko(void)
|
|||
|
||||
void *nsalloc(size_t size)
|
||||
{
|
||||
return nsIMemory_Alloc(nsmem, size);
|
||||
return NS_Alloc(size);
|
||||
}
|
||||
|
||||
void nsfree(void *mem)
|
||||
{
|
||||
nsIMemory_Free(nsmem, mem);
|
||||
NS_Free(mem);
|
||||
}
|
||||
|
||||
static BOOL nsACString_Init(nsACString *str, const char *data)
|
||||
BOOL nsACString_Init(nsACString *str, const char *data)
|
||||
{
|
||||
return NS_SUCCEEDED(NS_CStringContainerInit2(str, data, PR_UINT32_MAX, 0));
|
||||
}
|
||||
|
@ -1107,9 +1099,6 @@ void close_gecko(void)
|
|||
if(cat_mgr)
|
||||
nsICategoryManager_Release(cat_mgr);
|
||||
|
||||
if(nsmem)
|
||||
nsIMemory_Release(nsmem);
|
||||
|
||||
/* Gecko doesn't really support being unloaded */
|
||||
/* if (hXPCOM) FreeLibrary(hXPCOM); */
|
||||
|
||||
|
@ -1479,9 +1468,21 @@ static nsresult NSAPI nsContextMenuListener_OnShowContextMenu(nsIContextMenuList
|
|||
switch(aContextFlags) {
|
||||
case CONTEXT_NONE:
|
||||
case CONTEXT_DOCUMENT:
|
||||
case CONTEXT_TEXT:
|
||||
dwID = CONTEXT_MENU_DEFAULT;
|
||||
case CONTEXT_TEXT: {
|
||||
nsISelection *selection;
|
||||
|
||||
nsres = nsIDOMHTMLDocument_GetSelection(This->doc->basedoc.doc_node->nsdoc, &selection);
|
||||
if(NS_SUCCEEDED(nsres) && selection) {
|
||||
cpp_bool is_collapsed;
|
||||
|
||||
/* FIXME: Check if the click was inside selection. */
|
||||
nsres = nsISelection_GetIsCollapsed(selection, &is_collapsed);
|
||||
nsISelection_Release(selection);
|
||||
if(NS_SUCCEEDED(nsres) && !is_collapsed)
|
||||
dwID = CONTEXT_MENU_TEXTSELECT;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case CONTEXT_IMAGE:
|
||||
case CONTEXT_IMAGE|CONTEXT_LINK:
|
||||
dwID = CONTEXT_MENU_IMAGE;
|
||||
|
@ -1566,12 +1567,12 @@ static nsresult NSAPI nsURIContentListener_OnStartURIOpen(nsIURIContentListener
|
|||
}
|
||||
|
||||
static nsresult NSAPI nsURIContentListener_DoContent(nsIURIContentListener *iface,
|
||||
const char *aContentType, cpp_bool aIsContentPreferred, nsIRequest *aRequest,
|
||||
const nsACString *aContentType, cpp_bool aIsContentPreferred, nsIRequest *aRequest,
|
||||
nsIStreamListener **aContentHandler, cpp_bool *_retval)
|
||||
{
|
||||
NSContainer *This = impl_from_nsIURIContentListener(iface);
|
||||
|
||||
TRACE("(%p)->(%s %x %p %p %p)\n", This, debugstr_a(aContentType), aIsContentPreferred,
|
||||
TRACE("(%p)->(%p %x %p %p %p)\n", This, aContentType, aIsContentPreferred,
|
||||
aRequest, aContentHandler, _retval);
|
||||
|
||||
return This->content_listener
|
||||
|
@ -2151,3 +2152,51 @@ void NSContainer_Release(NSContainer *This)
|
|||
|
||||
nsIWebBrowserChrome_Release(&This->nsIWebBrowserChrome_iface);
|
||||
}
|
||||
|
||||
nsIXMLHttpRequest *create_nsxhr(nsIDOMWindow *nswindow)
|
||||
{
|
||||
nsIScriptSecurityManager *secman;
|
||||
nsIPrincipal *nspri;
|
||||
nsIGlobalObject *nsglo;
|
||||
nsIXMLHttpRequest *nsxhr;
|
||||
nsresult nsres;
|
||||
|
||||
nsres = nsIServiceManager_GetServiceByContractID(pServMgr,
|
||||
NS_SCRIPTSECURITYMANAGER_CONTRACTID,
|
||||
&IID_nsIScriptSecurityManager, (void**)&secman);
|
||||
if(NS_FAILED(nsres)) {
|
||||
ERR("Could not get sec manager service: %08x\n", nsres);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
nsres = nsIScriptSecurityManager_GetSystemPrincipal(secman, &nspri);
|
||||
nsIScriptSecurityManager_Release(secman);
|
||||
if(NS_FAILED(nsres)) {
|
||||
ERR("GetSystemPrincipal failed: %08x\n", nsres);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
nsres = nsIDOMWindow_QueryInterface(nswindow, &IID_nsIGlobalObject, (void **)&nsglo);
|
||||
assert(nsres == NS_OK);
|
||||
|
||||
nsres = nsIComponentManager_CreateInstanceByContractID(pCompMgr,
|
||||
NS_XMLHTTPREQUEST_CONTRACTID, NULL, &IID_nsIXMLHttpRequest,
|
||||
(void**)&nsxhr);
|
||||
if(NS_FAILED(nsres)) {
|
||||
ERR("Could not get nsIXMLHttpRequest: %08x\n", nsres);
|
||||
nsISupports_Release(nspri);
|
||||
nsIGlobalObject_Release(nsglo);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
nsres = nsIXMLHttpRequest_Init(nsxhr, nspri, NULL, nsglo, NULL, NULL);
|
||||
|
||||
nsISupports_Release(nspri);
|
||||
nsIGlobalObject_Release(nsglo);
|
||||
if(NS_FAILED(nsres)) {
|
||||
ERR("nsIXMLHttpRequest_Init failed: %08x\n", nsres);
|
||||
nsIXMLHttpRequest_Release(nsxhr);
|
||||
return NULL;
|
||||
}
|
||||
return nsxhr;
|
||||
}
|
||||
|
|
|
@ -23,7 +23,9 @@
|
|||
* compatible with XPCOM, usable in C code.
|
||||
*/
|
||||
|
||||
cpp_quote("#define GECKO_VERSION \"2.34\"")
|
||||
#pragma makedep header
|
||||
|
||||
cpp_quote("#define GECKO_VERSION \"2.40\"")
|
||||
cpp_quote("#define GECKO_VERSION_STRING \"Wine Gecko \" GECKO_VERSION")
|
||||
|
||||
import "wtypes.idl";
|
||||
|
@ -145,7 +147,6 @@ typedef nsISupports nsIAtom;
|
|||
typedef nsISupports nsISupportsArray;
|
||||
typedef nsISupports nsIContentFilter;
|
||||
typedef nsISupports nsIDOMMediaList;
|
||||
typedef nsISupports nsIDOMHTMLTableCaptionElement;
|
||||
typedef nsISupports nsIDOMHTMLTableSectionElement;
|
||||
typedef nsISupports nsIDOMClientRectList;
|
||||
typedef nsISupports nsINode;
|
||||
|
@ -196,6 +197,14 @@ typedef nsISupports nsIDOMPkcs11;
|
|||
typedef nsISupports nsIDocShellTreeOwner;
|
||||
typedef nsISupports nsIArray;
|
||||
typedef nsISupports nsILoadInfo;
|
||||
typedef nsISupports nsIContentSecurityPolicy;
|
||||
typedef nsISupports nsIXMLHttpRequestUpload;
|
||||
typedef nsISupports nsIClassInfo;
|
||||
typedef nsISupports nsILoadContext;
|
||||
typedef nsISupports nsIDomainPolicy;
|
||||
typedef nsISupports nsIScriptContext;
|
||||
typedef nsISupports nsIObjectInputStream;
|
||||
typedef nsISupports nsIObjectOutputStream;
|
||||
|
||||
typedef void *JSContext;
|
||||
typedef void *JSObject;
|
||||
|
@ -225,21 +234,6 @@ interface nsIFactory : nsISupports
|
|||
nsresult LockFactory(bool lock);
|
||||
}
|
||||
|
||||
[
|
||||
object,
|
||||
uuid(6aef11c4-8615-44a6-9711-98f43805693d),
|
||||
local
|
||||
]
|
||||
interface nsIMemory : nsISupports
|
||||
{
|
||||
void *Alloc(/*size_t*/ int size);
|
||||
void *Realloc(void *_ptr, /*size_t*/ int newSize);
|
||||
void Free(void *_ptr);
|
||||
nsresult HeapMinimize(bool immediate);
|
||||
nsresult IsLowMemory(bool *_retval);
|
||||
nsresult IsLowMemoryPlatform(bool *_retval);
|
||||
}
|
||||
|
||||
[
|
||||
object,
|
||||
uuid(9188bc85-f92e-11d2-81ef-0060083a0bcf),
|
||||
|
@ -615,7 +609,7 @@ interface nsIHttpHeaderVisitor : nsISupports
|
|||
|
||||
[
|
||||
object,
|
||||
uuid(1bc753ad-5b88-454d-b4c0-4fd34cce6d96),
|
||||
uuid(86ad7e1f-3a64-4e0f-a104-395ebecd7d5c),
|
||||
local
|
||||
]
|
||||
interface nsIHttpChannel : nsIChannel
|
||||
|
@ -624,6 +618,8 @@ interface nsIHttpChannel : nsIChannel
|
|||
nsresult SetRequestMethod(const nsACString *aRequestMethod);
|
||||
nsresult GetReferrer(nsIURI **aReferrer);
|
||||
nsresult SetReferrer(nsIURI *aReferrer);
|
||||
nsresult GetReferrerPolicy(uint32_t *aReferrerPolicy);
|
||||
nsresult SetReferrerWithPolicy(nsIURI *referrer, uint32_t referrerPolicy);
|
||||
nsresult GetRequestHeader(const nsACString *aHeader, nsACString *_retval);
|
||||
nsresult SetRequestHeader(const nsACString *aHeader, const nsACString *aValue, bool aMerge);
|
||||
nsresult VisitRequestHeaders(nsIHttpHeaderVisitor *aVisitor);
|
||||
|
@ -641,12 +637,13 @@ interface nsIHttpChannel : nsIChannel
|
|||
nsresult VisitResponseHeaders(nsIHttpHeaderVisitor *aVisitor);
|
||||
nsresult IsNoStoreResponse(bool *_retval);
|
||||
nsresult IsNoCacheResponse(bool *_retval);
|
||||
nsresult IsPrivateResponse(bool *_retval);
|
||||
nsresult RedirectTo(nsIURI *aNewURI);
|
||||
}
|
||||
|
||||
[
|
||||
object,
|
||||
uuid(a4bf4fc5-b5a9-4098-bd20-409d71bf18e6),
|
||||
uuid(26833ec7-4555-4f23-9281-3a12d4b76db1),
|
||||
local
|
||||
]
|
||||
interface nsIHttpChannelInternal : nsISupports
|
||||
|
@ -671,15 +668,23 @@ interface nsIHttpChannelInternal : nsISupports
|
|||
nsresult HTTPUpgrade(const nsACString *aProtocolName, nsIHttpUpgradeListener *aListener);
|
||||
nsresult GetAllowSpdy(bool *aAllowSpdy);
|
||||
nsresult SetAllowSpdy(bool aAllowSpdy);
|
||||
nsresult GetLoadAsBlocking(bool *aLoadAsBlocking);
|
||||
nsresult SetLoadAsBlocking(bool aLoadAsBlocking);
|
||||
nsresult GetLoadUnblocked(bool *aLoadUnblocked);
|
||||
nsresult SetLoadUnblocked(bool aLoadUnblocked);
|
||||
nsresult GetResponseTimeoutEnabled(bool *aResponseTimeoutEnabled);
|
||||
nsresult SetResponseTimeoutEnabled(bool aResponseTimeoutEnabled);
|
||||
nsresult GetApiRedirectToURI(nsIURI * *aApiRedirectToURI);
|
||||
nsresult GetApiRedirectToURI(nsIURI **aApiRedirectToURI);
|
||||
nsresult GetAllowAltSvc(bool *aAllowAltSvc);
|
||||
nsresult SetAllowAltSvc(bool aAllowAltSvc);
|
||||
nsresult AddRedirect(nsIPrincipal *aPrincipal);
|
||||
nsresult GetLastModifiedTime(PRTime *aLastModifiedTime);
|
||||
nsresult ForceNoIntercept();
|
||||
nsresult GetCorsIncludeCredentials(bool *aCorsIncludeCredentials);
|
||||
nsresult SetCorsIncludeCredentials(bool aCorsIncludeCredentials);
|
||||
nsresult GetCorsMode(uint32_t *aCorsMode);
|
||||
nsresult SetCorsMode(uint32_t aCorsMode);
|
||||
nsresult GetTopWindowURI(nsIURI **aTopWindowURI);
|
||||
nsresult GetNetworkInterfaceId(nsACString *aNetworkInterfaceId);
|
||||
nsresult SetNetworkInterfaceId(const nsACString *aNetworkInterfaceId);
|
||||
nsresult ContinueBeginConnect();
|
||||
nsresult GetProxyURI(nsIURI **aProxyURI);
|
||||
}
|
||||
|
||||
[
|
||||
|
@ -706,7 +711,7 @@ interface nsIAsyncVerifyRedirectCallback : nsISupports
|
|||
|
||||
[
|
||||
object,
|
||||
uuid(a430d870-df77-4502-9570-d46a8de33154),
|
||||
uuid(0197720d-37ed-4e75-8956-d0d296e4d8a6),
|
||||
local
|
||||
]
|
||||
interface nsIChannelEventSink : nsISupports
|
||||
|
@ -714,6 +719,7 @@ interface nsIChannelEventSink : nsISupports
|
|||
const UINT REDIRECT_TEMPORARY = 1;
|
||||
const UINT REDIRECT_PERMANENT = 2;
|
||||
const UINT REDIRECT_INTERNAL = 4;
|
||||
const UINT REDIRECT_STS_UPGRADE = 8;
|
||||
|
||||
nsresult AsyncOnChannelRedirect(nsIChannel *oldChannel, nsIChannel *newChannel, uint32_t flags,
|
||||
nsIAsyncVerifyRedirectCallback *callback);
|
||||
|
@ -879,7 +885,7 @@ interface nsIDOMMozNamedAttrMap : nsISupports
|
|||
|
||||
[
|
||||
object,
|
||||
uuid(56545150-a001-484e-9ed4-cb319eebd7b3),
|
||||
uuid(cc35b412-009b-46a3-9be0-76448f12548d),
|
||||
local
|
||||
]
|
||||
interface nsIDOMNode : nsISupports
|
||||
|
@ -930,7 +936,7 @@ interface nsIDOMNode : nsISupports
|
|||
nsresult GetNamespaceURI(nsAString *aNamespaceURI);
|
||||
nsresult GetPrefix(nsAString *aPrefix);
|
||||
nsresult GetLocalName(nsAString *aLocalName);
|
||||
nsresult HasAttributes(bool *_retval);
|
||||
nsresult UnusedPlaceholder(bool *_retval);
|
||||
nsresult GetDOMBaseURI(nsAString *aBaseURI);
|
||||
nsresult CompareDocumentPosition(nsIDOMNode *other, uint16_t *_retval);
|
||||
nsresult GetTextContent(nsAString *aTextContent);
|
||||
|
@ -939,7 +945,7 @@ interface nsIDOMNode : nsISupports
|
|||
nsresult IsDefaultNamespace(const nsAString *namespaceURI, bool *_retval);
|
||||
nsresult LookupNamespaceURI(const nsAString *prefix, nsAString *_retval);
|
||||
nsresult IsEqualNode(nsIDOMNode *arg, bool *_retval);
|
||||
nsresult SetUserData(const nsAString *key, nsIVariant *data, nsIDOMUserDataHandler *handler, nsIVariant **_retval);
|
||||
nsresult SetUserData(const nsAString *key, nsIVariant *data, nsIVariant **_retval);
|
||||
nsresult GetUserData(const nsAString *key, nsIVariant **_retval);
|
||||
nsresult Contains(nsIDOMNode *aOther, bool *_retval);
|
||||
|
||||
|
@ -949,7 +955,7 @@ interface nsIDOMNode : nsISupports
|
|||
|
||||
[
|
||||
object,
|
||||
uuid(a974a4d3-2ff1-445b-8b8e-0aada5d4eedc),
|
||||
uuid(7db491e8-a3a3-4432-ad67-e6c33e24ac6d),
|
||||
local
|
||||
]
|
||||
interface nsIDOMAttr : nsIDOMNode
|
||||
|
@ -979,7 +985,7 @@ interface nsIDOMClientRect : nsISupports
|
|||
|
||||
[
|
||||
object,
|
||||
uuid(d7de6065-1776-4f52-a776-4bbeabacbdaf),
|
||||
uuid(6289999b-1008-4269-b42a-413ec5a9d3f4),
|
||||
local
|
||||
]
|
||||
interface nsIDOMElement : nsIDOMNode
|
||||
|
@ -999,6 +1005,7 @@ interface nsIDOMElement : nsIDOMNode
|
|||
nsresult RemoveAttributeNS(const nsAString *namespaceURI, const nsAString *localName);
|
||||
nsresult HasAttribute(const nsAString *name, bool *_retval);
|
||||
nsresult HasAttributeNS(const nsAString *namespaceURI, const nsAString *localName, bool *_retval);
|
||||
nsresult HasAttributes(bool *_retval);
|
||||
nsresult GetAttributeNode(const nsAString *name, nsIDOMAttr **_retval);
|
||||
nsresult SetAttributeNode(nsIDOMAttr *newAttr, nsIDOMAttr **_retval);
|
||||
nsresult RemoveAttributeNode(nsIDOMAttr *oldAttr, nsIDOMAttr **_retval);
|
||||
|
@ -1049,7 +1056,7 @@ interface nsIDOMElementCSSInlineStyle : nsISupports
|
|||
|
||||
[
|
||||
object,
|
||||
uuid(db3352cf-04f3-4e7e-baa0-cd2f81b46328),
|
||||
uuid(b0c42392-d0e7-4f6a-beb5-a698ce648945),
|
||||
local
|
||||
]
|
||||
interface nsIDOMHTMLElement : nsIDOMElement
|
||||
|
@ -1116,7 +1123,7 @@ interface nsIDOMHTMLHeadElement : nsISupports
|
|||
|
||||
[
|
||||
object,
|
||||
uuid(84f72a38-1873-46f8-937c-1df22d7e7cae),
|
||||
uuid(4109a2d2-e7af-445d-bb72-c7c9b875f35e),
|
||||
local
|
||||
]
|
||||
interface nsIDOMCharacterData : nsIDOMNode
|
||||
|
@ -1134,7 +1141,7 @@ interface nsIDOMCharacterData : nsIDOMNode
|
|||
|
||||
[
|
||||
object,
|
||||
uuid(d14d13b4-21d5-49e2-8d59-76a24156db54),
|
||||
uuid(67273994-6aff-4091-9de9-b788a249f783),
|
||||
local
|
||||
]
|
||||
interface nsIDOMText : nsIDOMCharacterData
|
||||
|
@ -1145,7 +1152,7 @@ interface nsIDOMText : nsIDOMCharacterData
|
|||
|
||||
[
|
||||
object,
|
||||
uuid(e702a5d2-3aa8-4788-b048-2d3b3e6d16f2),
|
||||
uuid(e7866ff8-b7fc-494f-87c0-fb017d8a4d30),
|
||||
local
|
||||
]
|
||||
interface nsIDOMComment : nsIDOMCharacterData
|
||||
|
@ -1154,7 +1161,7 @@ interface nsIDOMComment : nsIDOMCharacterData
|
|||
|
||||
[
|
||||
object,
|
||||
uuid(75a237af-133e-40f0-8196-2a172867c41a),
|
||||
uuid(48eb8d72-95bb-402e-a8fc-f2b187abcbdb),
|
||||
local
|
||||
]
|
||||
interface nsIDOMDocumentFragment : nsIDOMNode
|
||||
|
@ -1165,7 +1172,7 @@ interface nsIDOMDocumentFragment : nsIDOMNode
|
|||
|
||||
[
|
||||
object,
|
||||
uuid(d24d1118-a527-4d5a-9c4e-fb07dfc2fc27),
|
||||
uuid(35dc5030-dc83-4291-88a2-0906c549788e),
|
||||
local
|
||||
]
|
||||
interface nsIDOMDocument : nsIDOMNode
|
||||
|
@ -1241,7 +1248,7 @@ interface nsIDOMDocument : nsIDOMNode
|
|||
|
||||
[
|
||||
object,
|
||||
uuid(b73be9dd-bcc8-44df-8b01-3389e277427f),
|
||||
uuid(bd2a0a46-17e4-46ea-9e5d-6a97cf5e3b28),
|
||||
local
|
||||
]
|
||||
interface nsIDOMHTMLDocument : nsIDOMDocument
|
||||
|
@ -1383,7 +1390,7 @@ interface nsIDOMWindowCollection : nsISupports
|
|||
|
||||
[
|
||||
object,
|
||||
uuid(ed7cc4e4-cf5b-42af-9c2e-8df074a01470),
|
||||
uuid(8146f3fc-9fc1-47c5-85ef-95d686e4ca6d),
|
||||
local
|
||||
]
|
||||
interface nsIDOMWindow : nsISupports
|
||||
|
@ -1431,7 +1438,6 @@ interface nsIDOMWindow : nsISupports
|
|||
nsresult GetSessionStorage(nsISupports **aSessionStorage);
|
||||
nsresult GetLocalStorage(nsISupports **aLocalStorage);
|
||||
nsresult GetIndexedDB(nsISupports **aIndexedDB);
|
||||
nsresult GetMozIndexedDB(nsISupports **aMozIndexedDB);
|
||||
nsresult GetSelection(nsISelection **_retval);
|
||||
nsresult MatchMedia(const nsAString *media_query_list, nsISupports **_retval);
|
||||
nsresult GetScreen(nsIDOMScreen **aScreen);
|
||||
|
@ -1495,46 +1501,6 @@ interface nsIDOMWindow : nsISupports
|
|||
nsresult MozCancelRequestAnimationFrame(int32_t aHandle);
|
||||
nsresult CancelAnimationFrame(int32_t aHandle);
|
||||
nsresult GetMozAnimationStartTime(int64_t *aMozAnimationStartTime);
|
||||
nsresult GetOnafterprint(JSContext *cx, jsval *aOnafterprint);
|
||||
nsresult SetOnafterprint(JSContext *cx, const jsval *aOnafterprint);
|
||||
nsresult GetOnbeforeprint(JSContext *cx, jsval *aOnbeforeprint);
|
||||
nsresult SetOnbeforeprint(JSContext *cx, const jsval *aOnbeforeprint);
|
||||
nsresult GetOnbeforeunload(JSContext *cx, jsval *aOnbeforeunload);
|
||||
nsresult SetOnbeforeunload(JSContext *cx, const jsval *aOnbeforeunload);
|
||||
nsresult GetOnhashchange(JSContext *cx, jsval *aOnhashchange);
|
||||
nsresult SetOnhashchange(JSContext *cx, const jsval *aOnhashchange);
|
||||
nsresult GetOnlanguagechange(JSContext *cx, jsval *aOnlanguagechange);
|
||||
nsresult SetOnlanguagechange(JSContext *cx, const jsval *aOnlanguagechange);
|
||||
nsresult GetOnmessage(JSContext *cx, jsval *aOnmessage);
|
||||
nsresult SetOnmessage(JSContext *cx, const jsval *aOnmessage);
|
||||
nsresult GetOnoffline(JSContext *cx, jsval *aOnoffline);
|
||||
nsresult SetOnoffline(JSContext *cx, const jsval *aOnoffline);
|
||||
nsresult GetOnonline(JSContext *cx, jsval *aOnonline);
|
||||
nsresult SetOnonline(JSContext *cx, const jsval *aOnonline);
|
||||
nsresult GetOnpopstate(JSContext *cx, jsval *aOnpopstate);
|
||||
nsresult SetOnpopstate(JSContext *cx, const jsval *aOnpopstate);
|
||||
nsresult GetOnpagehide(JSContext *cx, jsval *aOnpagehide);
|
||||
nsresult SetOnpagehide(JSContext *cx, const jsval *aOnpagehide);
|
||||
nsresult GetOnpageshow(JSContext *cx, jsval *aOnpageshow);
|
||||
nsresult SetOnpageshow(JSContext *cx, const jsval *aOnpageshow);
|
||||
nsresult GetOnresize(JSContext *cx, jsval *aOnresize);
|
||||
nsresult SetOnresize(JSContext *cx, const jsval *aOnresize);
|
||||
nsresult GetOnunload(JSContext *cx, jsval *aOnunload);
|
||||
nsresult SetOnunload(JSContext *cx, const jsval *aOnunload);
|
||||
nsresult GetOndevicemotion(JSContext *cx, jsval *aOndevicemotion);
|
||||
nsresult SetOndevicemotion(JSContext *cx, const jsval *aOndevicemotion);
|
||||
nsresult GetOndeviceorientation(JSContext *cx, jsval *aOndeviceorientation);
|
||||
nsresult SetOndeviceorientation(JSContext *cx, const jsval *aOndeviceorientation);
|
||||
nsresult GetOndeviceproximity(JSContext* cx, jsval *aOndeviceproximity);
|
||||
nsresult SetOndeviceproximity(JSContext* cx, const jsval *aOndeviceproximity);
|
||||
nsresult GetOnuserproximity(JSContext* cx, jsval *aOndeviceproximity);
|
||||
nsresult SetOnuserproximity(JSContext* cx, const jsval *aOndeviceproximity);
|
||||
nsresult GetOndevicelight(JSContext* cx, jsval *aOndevicelight);
|
||||
nsresult SetOndevicelight(JSContext* cx, const jsval *aOndevicelight);
|
||||
nsresult GetOnmouseenter(JSContext* cx, jsval *aOnmouseenter);
|
||||
nsresult SetOnmouseenter(JSContext* cx, const jsval *aOnmouseenter);
|
||||
nsresult GetOnmouseleave(JSContext* cx, jsval *aOnmouseleave);
|
||||
nsresult SetOnmouseleave(JSContext* cx, const jsval *aOnmouseleave);
|
||||
nsresult GetConsole(JSContext *cx, jsval *aConsole);
|
||||
nsresult SetConsole(JSContext *cx, const jsval *aConsole);
|
||||
}
|
||||
|
@ -1864,7 +1830,7 @@ interface nsIDOMHTMLTextAreaElement : nsISupports
|
|||
|
||||
[
|
||||
object,
|
||||
uuid(4627336e-3070-4e73-8f67-3851b54cc0eb),
|
||||
uuid(fe96dc1c-40e4-4974-9354-e3fce663c3d5),
|
||||
local
|
||||
]
|
||||
interface nsIDOMHTMLScriptElement : nsISupports
|
||||
|
@ -1885,13 +1851,11 @@ interface nsIDOMHTMLScriptElement : nsISupports
|
|||
nsresult SetHtmlFor(const nsAString *aHtmlFor);
|
||||
nsresult GetEvent(nsAString *aEvent);
|
||||
nsresult SetEvent(const nsAString *aEvent);
|
||||
nsresult GetCrossOrigin(nsAString *aCrossOrigin);
|
||||
nsresult SetCrossOrigin(const nsAString *aCrossOrigin);
|
||||
}
|
||||
|
||||
[
|
||||
object,
|
||||
uuid(e83e726a-0aef-4292-938b-253fec691e2f),
|
||||
uuid(ec18e71c-4f5c-4cc3-aa36-5273168644dc),
|
||||
local
|
||||
]
|
||||
interface nsIDOMHTMLImageElement : nsISupports
|
||||
|
@ -1904,8 +1868,6 @@ interface nsIDOMHTMLImageElement : nsISupports
|
|||
nsresult SetSrcset(const nsAString *aSrcset) ;
|
||||
nsresult GetSizes(nsAString *aSizes);
|
||||
nsresult SetSizes(const nsAString *aSizes);
|
||||
nsresult GetCrossOrigin(nsAString *aCrossOrigin);
|
||||
nsresult SetCrossOrigin(const nsAString *aCrossOrigin);
|
||||
nsresult GetUseMap(nsAString *aUseMap);
|
||||
nsresult SetUseMap(const nsAString *aUseMap);
|
||||
nsresult GetIsMap(bool *aIsMap);
|
||||
|
@ -1988,7 +1950,45 @@ interface nsIDOMHTMLAnchorElement : nsISupports
|
|||
|
||||
[
|
||||
object,
|
||||
uuid(95d6ec66-2754-45bd-a068-49ac1fb45004),
|
||||
uuid(40c78026-36dc-40ca-9221-de73267e9e99),
|
||||
local
|
||||
]
|
||||
interface nsIDOMHTMLAreaElement : nsISupports
|
||||
{
|
||||
nsresult GetAlt(const nsAString *aAlt);
|
||||
nsresult SetAlt(nsAString *aAlt);
|
||||
nsresult GetCoords(const nsAString *aCoords);
|
||||
nsresult SetCoords(nsAString *aCoords);
|
||||
nsresult GetShape(const nsAString *aShape);
|
||||
nsresult SetShape(nsAString *aShape);
|
||||
nsresult GetHref(const nsAString *aHref);
|
||||
nsresult SetHref(nsAString *aHref);
|
||||
nsresult GetTarget(const nsAString *aTarget);
|
||||
nsresult SetTarget(nsAString *aTarget);
|
||||
nsresult GetPing(const nsAString *aPing);
|
||||
nsresult SetPing(nsAString *aPing);
|
||||
nsresult GetDownload(const nsAString *aDownload);
|
||||
nsresult SetDownload(nsAString *aDownload);
|
||||
nsresult GetProtocol(const nsAString *aProtocol);
|
||||
nsresult SetProtocol(nsAString *aProtocol);
|
||||
nsresult GetHost(const nsAString *aHost);
|
||||
nsresult SetHost(nsAString *aHost);
|
||||
nsresult GetPort(const nsAString *aPort);
|
||||
nsresult SetPort(nsAString *aPort);
|
||||
nsresult GetPathname(const nsAString *aPathname);
|
||||
nsresult SetPathname(nsAString *aPathname);
|
||||
nsresult GetSearch(const nsAString *aSearch);
|
||||
nsresult SetSearch(nsAString *aSearch);
|
||||
nsresult GetHash(const nsAString *aHash);
|
||||
nsresult SetHash(nsAString *aHash);
|
||||
nsresult GetNoHref(const nsAString *aNoHref);
|
||||
nsresult SetNoHref(nsAString *aNoHref);
|
||||
nsresult ToString(nsAString *_retval);
|
||||
}
|
||||
|
||||
[
|
||||
object,
|
||||
uuid(ee50b7ab-0015-4fbe-89e0-e3feacd4ffde),
|
||||
local
|
||||
]
|
||||
interface nsIDOMHTMLLinkElement : nsISupports
|
||||
|
@ -2011,8 +2011,6 @@ interface nsIDOMHTMLLinkElement : nsISupports
|
|||
nsresult SetTarget(const nsAString *aTarget);
|
||||
nsresult GetType(nsAString *aType);
|
||||
nsresult SetType(const nsAString *aType);
|
||||
nsresult GetCrossOrigin(nsAString *aCrossOrigin);
|
||||
nsresult SetCrossOrigin(const nsAString *aCrossOrigin);
|
||||
}
|
||||
|
||||
[
|
||||
|
@ -2022,8 +2020,8 @@ interface nsIDOMHTMLLinkElement : nsISupports
|
|||
]
|
||||
interface nsIDOMHTMLTableElement : nsISupports
|
||||
{
|
||||
nsresult GetCaption(nsIDOMHTMLTableCaptionElement **aCaption);
|
||||
nsresult SetCaption(nsIDOMHTMLTableCaptionElement *aCaption);
|
||||
nsresult GetCaption(nsIDOMHTMLElement **aCaption);
|
||||
nsresult SetCaption(nsIDOMHTMLElement *aCaption);
|
||||
nsresult GetTHead(nsIDOMHTMLElement **aTHead);
|
||||
nsresult SetTHead(nsIDOMHTMLElement *aTHead);
|
||||
nsresult GetTFoot(nsIDOMHTMLElement **aTFoot);
|
||||
|
@ -2250,13 +2248,13 @@ interface nsIDOMHTMLStyleElement : nsISupports
|
|||
|
||||
[
|
||||
object,
|
||||
uuid(94928ab3-8b63-11d3-989d-001083010e9b),
|
||||
uuid(10a28f38-32e8-4c63-8aa1-12eaaebc369a),
|
||||
local
|
||||
]
|
||||
interface nsIURIContentListener : nsISupports
|
||||
{
|
||||
nsresult OnStartURIOpen(nsIURI *aURI, bool *_retval);
|
||||
nsresult DoContent(const char *aContentType, bool aIsContentPreferred, nsIRequest *aRequest,
|
||||
nsresult DoContent(const nsACString *aContentType, bool aIsContentPreferred, nsIRequest *aRequest,
|
||||
nsIStreamListener **aContentHandler, bool *_retval);
|
||||
nsresult IsPreferred(const char *aContentType, char **aDesiredContentType, bool *_retval);
|
||||
nsresult CanHandleContent(const char *aContentType, bool aIsContentPreferred,
|
||||
|
@ -2348,7 +2346,7 @@ interface nsIBaseWindow : nsISupports
|
|||
|
||||
[
|
||||
object,
|
||||
uuid(b7568a50-4c50-442c-a6be-3a340a48d89a),
|
||||
uuid(0e92d522-53a5-4af6-9a24-4eccdcbf4f91),
|
||||
local
|
||||
]
|
||||
interface nsIWebNavigation : nsISupports
|
||||
|
@ -2378,7 +2376,7 @@ interface nsIWebNavigation : nsISupports
|
|||
nsresult GotoIndex(int32_t index);
|
||||
nsresult LoadURI(const PRUnichar *aURI, uint32_t aLoadFlags, nsIURI *aReferrer,
|
||||
nsIInputStream *aPostData, nsIInputStream *aHeaders);
|
||||
nsresult LoadURIWithBase(const PRUnichar *aURI, uint32_t aLoadFlags, nsIURI *aReferrer,
|
||||
nsresult LoadURIWithOptions(const PRUnichar *aURI, uint32_t aLoadFlags, nsIURI *aReferrer, uint32_t aReferrerPolicy,
|
||||
nsIInputStream *aPostData, nsIInputStream *aHeaders, nsIURI *aBaseURI);
|
||||
nsresult Reload(uint32_t aReloadFlags);
|
||||
nsresult Stop(uint32_t aStopFlags);
|
||||
|
@ -2745,7 +2743,7 @@ interface nsIDirectoryServiceProvider2 : nsIDirectoryServiceProvider
|
|||
|
||||
[
|
||||
object,
|
||||
uuid(f5753fec-a051-4ddc-8891-11f1f1575072),
|
||||
uuid(a7aad716-e72c-435d-82f1-7582dffae661),
|
||||
local
|
||||
]
|
||||
interface nsIProtocolHandler : nsISupports
|
||||
|
@ -2776,6 +2774,7 @@ interface nsIProtocolHandler : nsISupports
|
|||
nsresult GetProtocolFlags(uint32_t *aProtocolFlags);
|
||||
nsresult NewURI(const nsACString *aSpec, const char *aOriginCharset,
|
||||
nsIURI *aBaseURI, nsIURI **_retval);
|
||||
nsresult NewChannel2(nsIURI *aURI, nsILoadInfo *aLoadinfo, nsIChannel **_retval);
|
||||
nsresult NewChannel(nsIURI *aURI, nsIChannel **_retval);
|
||||
nsresult AllowPort(int32_t port, const char *scheme, bool *_retval);
|
||||
}
|
||||
|
@ -2792,7 +2791,7 @@ interface nsIExternalProtocolHandler : nsIProtocolHandler
|
|||
|
||||
[
|
||||
object,
|
||||
uuid(bddeda3f-9020-4d12-8c70-984ee9f7935e),
|
||||
uuid(4286de5a-b2ea-446f-8f70-e2a461f42694),
|
||||
local
|
||||
]
|
||||
interface nsIIOService : nsISupports
|
||||
|
@ -2802,13 +2801,26 @@ interface nsIIOService : nsISupports
|
|||
nsresult NewURI(const nsACString *aSpec, const char *aOriginCharset, nsIURI *aBaseURI,
|
||||
nsIURI **_retval);
|
||||
nsresult NewFileURI(nsIFile *aFile, nsIURI **_retval);
|
||||
nsresult NewChannelFromURI2(nsIURI *aURI, nsIDOMNode *aLoadingNode, nsIPrincipal *aLoadingPrincipal,
|
||||
nsIPrincipal *aTriggeringPrincipal, uint32_t aSecurityFlags, uint32_t aContentPolicyType,
|
||||
nsIChannel **_retval);
|
||||
nsresult NewChannelFromURIWithLoadInfo(nsIURI *aURI, nsILoadInfo *aLoadInfo, nsIChannel **_retval);
|
||||
nsresult NewChannelFromURI(nsIURI *aURI, nsIChannel **_retval);
|
||||
nsresult NewChannel2(const nsACString *aSpec, const char *aOriginCharset, nsIURI *aBaseURI,
|
||||
nsIDOMNode *aLoadingNode, nsIPrincipal *aLoadingPrincipal, nsIPrincipal *aTriggeringPrincipal,
|
||||
uint32_t aSecurityFlags, uint32_t aContentPolicyType, nsIChannel **_retval);
|
||||
nsresult NewChannel(const nsACString *aSpec, const char *aOriginCharset, nsIURI *aBaseURI,
|
||||
nsIChannel **_retval);
|
||||
nsresult GetOffline(bool *aOffline);
|
||||
nsresult SetOffline(bool aOffline);
|
||||
nsresult GetConnectivity(bool *aConnectivity);
|
||||
nsresult SetAppOffline(uint32_t appId, int32_t state);
|
||||
nsresult IsAppOffline(uint32_t appId, bool *_retval);
|
||||
nsresult GetAppOfflineState(uint32_t appId, int32_t *_retval);
|
||||
nsresult AllowPort(int32_t aPort, const char *aScheme, bool *_retval);
|
||||
nsresult ExtractScheme(const nsACString *urlString, nsACString *_retval);
|
||||
nsresult NewLoadInfo(nsIPrincipal *aLoadingPrincipal, nsIPrincipal *aTriggeringPrincipal,
|
||||
nsIDOMNode *aLoadingNode, uint32_t aSecurityFlags, uint32_t aContentPolicyType, nsILoadInfo **_retval);
|
||||
}
|
||||
|
||||
[
|
||||
|
@ -2929,7 +2941,7 @@ interface nsIDOMEvent : nsISupports
|
|||
|
||||
[
|
||||
object,
|
||||
uuid(11911980-607c-4efd-aacc-de3b9005c058),
|
||||
uuid(1a75c351-d115-4d51-94df-731dd1723a1f),
|
||||
local
|
||||
]
|
||||
interface nsIDOMWindowUtils : nsISupports
|
||||
|
@ -2940,6 +2952,7 @@ interface nsIDOMWindowUtils : nsISupports
|
|||
nsresult GetCursorType(int16_t *_retval);
|
||||
nsresult GetDocumentMetadata(const nsAString *aName, nsAString *_retval);
|
||||
nsresult Redraw(uint32_t aCount, uint32_t *_retval);
|
||||
nsresult UpdateLayerTree();
|
||||
nsresult SetCSSViewport(float aWidthPx, float aHeightPx);
|
||||
nsresult GetViewportInfo(uint32_t aDisplayWidth, uint32_t aDisplayHeight, double *aDefaultZoom, bool *aAllowZoom,
|
||||
double *aMinZoom, double *aMaxZoom, uint32_t *aWidth, uint32_t *aHeight, bool *aAutoSize);
|
||||
|
@ -2948,8 +2961,9 @@ interface nsIDOMWindowUtils : nsISupports
|
|||
nsresult SetDisplayPortMarginsForElement(float aLeftMargin, float aTopMargin, float aRightMargin, float aBottomMargin,
|
||||
uint32_t aAlignmentX, uint32_t aAlignmentY, nsIDOMElement *aElement, uint32_t aPriority);
|
||||
nsresult SetDisplayPortBaseForElement(int32_t aX, int32_t aY, int32_t aWidth, int32_t aHeight, nsIDOMElement *aElement);
|
||||
nsresult SetResolution(float aXResolution, float aYResolution);
|
||||
nsresult GetResolution(float *aXResolution, float *aYResolution);
|
||||
nsresult SetResolution(float aResolution);
|
||||
nsresult GetResolution(float *aResolution);
|
||||
nsresult SetResolutionAndScaleTo(float aResolution);
|
||||
nsresult GetIsResolutionSet(bool *aIsResolutionSet);
|
||||
nsresult GetIsFirstPaint(bool *aIsFirstPaint);
|
||||
nsresult SetIsFirstPaint(bool aIsFirstPaint);
|
||||
|
@ -2978,15 +2992,16 @@ interface nsIDOMWindowUtils : nsISupports
|
|||
nsresult SendKeyEvent(const nsAString *aType, int32_t aKeyCode, int32_t aCharCode, int32_t aModifiers,
|
||||
uint32_t aAdditionalFlags, bool *_retval);
|
||||
nsresult SendNativeKeyEvent(int32_t aNativeKeyboardLayout, int32_t aNativeKeyCode, int32_t aModifierFlags,
|
||||
const nsAString *aCharacters, const nsAString *aUnmodifiedCharacters);
|
||||
const nsAString *aCharacters, const nsAString *aUnmodifiedCharacters, nsIObserver *aObserver);
|
||||
nsresult SendNativeMouseEvent(int32_t aScreenX, int32_t aScreenY, int32_t aNativeMessage, int32_t aModifierFlags,
|
||||
nsIDOMElement *aElement);
|
||||
nsIDOMElement *aElement, nsIObserver *aObserver);
|
||||
nsresult SendNativeMouseScrollEvent(int32_t aScreenX, int32_t aScreenY, uint32_t aNativeMessage, double aDeltaX,
|
||||
double aDeltaY, double aDeltaZ, uint32_t aModifierFlags, uint32_t aAdditionalFlags, nsIDOMElement *aElement);
|
||||
double aDeltaY, double aDeltaZ, uint32_t aModifierFlags, uint32_t aAdditionalFlags, nsIDOMElement *aElement,
|
||||
nsIObserver *aObserver);
|
||||
nsresult SendNativeTouchPoint(uint32_t aPointerId, uint32_t aTouchState, int32_t aScreenX, int32_t aScreenY,
|
||||
double aPressure, uint32_t aOrientation);
|
||||
nsresult SendNativeTouchTap(int32_t aScreenX, int32_t aScreenY, bool aLongTap);
|
||||
nsresult ClearNativeTouchSequence();
|
||||
double aPressure, uint32_t aOrientation, nsIObserver *aObserver);
|
||||
nsresult SendNativeTouchTap(int32_t aScreenX, int32_t aScreenY, bool aLongTap, nsIObserver *aObserver);
|
||||
nsresult ClearNativeTouchSequence(nsIObserver *aObserver);
|
||||
nsresult ActivateNativeMenuItemAt(const nsAString *indexString);
|
||||
nsresult ForceUpdateNativeMenuAt(const nsAString *indexString);
|
||||
nsresult Focus(nsIDOMElement *aElement);
|
||||
|
@ -3018,8 +3033,6 @@ interface nsIDOMWindowUtils : nsISupports
|
|||
nsresult DispatchEventToChromeOnly(nsIDOMEventTarget *aTarget, nsIDOMEvent *aEvent, bool *_retval);
|
||||
nsresult GetClassName(const /*JS::Value*/ void *aObject, JSContext *cx, char **_retval);
|
||||
nsresult SendContentCommandEvent(const nsAString *aType, nsITransferable *aTransferable);
|
||||
nsresult SendCompositionEvent(const nsAString *aType, const nsAString *aData, const nsAString *aLocale);
|
||||
nsresult CreateCompositionStringSynthesizer(int /*nsICompositionStringSynthesizer*/ **_retval);
|
||||
nsresult SendQueryContentEvent(uint32_t aType, uint32_t aOffset, uint32_t aLength, int32_t aX, int32_t aY,
|
||||
uint32_t aAdditionalFlags, nsIQueryContentEventResult **_retval);
|
||||
nsresult RemoteFrameFullscreenChanged(nsIDOMElement *aFrameElement, const nsAString *aNewOrigin);
|
||||
|
@ -3029,16 +3042,17 @@ interface nsIDOMWindowUtils : nsISupports
|
|||
nsresult SelectAtPoint(float aX, float aY, uint32_t aSelectBehavior, bool *_retval);
|
||||
nsresult GetVisitedDependentComputedStyle(nsIDOMElement *aElement, const nsAString *aPseudoElement,
|
||||
const nsAString *aPropertyName, nsAString *_retval);
|
||||
nsresult GetParent(const /*JS::Value*/ void *obj, JSContext *cx, /*JS::Value*/ void *_retval);
|
||||
nsresult GetOuterWindowID(uint64_t *aOuterWindowID);
|
||||
nsresult GetCurrentInnerWindowID(uint64_t *aCurrentInnerWindowID);
|
||||
nsresult EnterModalState();
|
||||
nsresult LeaveModalState();
|
||||
nsresult IsInModalState(bool *_retval);
|
||||
nsresult SetDesktopModeViewport(bool aDesktopModeViewport);
|
||||
nsresult SuspendTimeouts();
|
||||
nsresult ResumeTimeouts();
|
||||
nsresult GetLayerManagerType(nsAString *aLayerManagerType);
|
||||
nsresult GetLayerManagerRemote(bool *aLayerManagerRemote);
|
||||
nsresult GetSupportsHardwareH264Decoding(bool *aSupportsHardwareH264Decoding);
|
||||
nsresult StartFrameTimeRecording(uint32_t *startIndex);
|
||||
nsresult StopFrameTimeRecording(uint32_t startIndex, uint32_t *frameCount, float **frameIntervals);
|
||||
nsresult BeginTabSwitch();
|
||||
|
@ -3058,9 +3072,11 @@ interface nsIDOMWindowUtils : nsISupports
|
|||
nsresult FindElementWithViewId(long /*nsViewID*/ aId, nsIDOMElement **_retval);
|
||||
nsresult GetViewId(nsIDOMElement *aElement, long /*nsViewID*/ *_retval);
|
||||
nsresult LeafLayersPartitionWindow(bool *_retval);
|
||||
nsresult GetMayHaveTouchEventListeners(bool *aMayHaveTouchEventListeners);
|
||||
nsresult CheckAndClearPaintedState(nsIDOMElement *aElement, bool *_retval);
|
||||
nsresult IsPartOfOpaqueLayer(nsIDOMElement *aElement, bool *_retval);
|
||||
nsresult NumberOfAssignedPaintedLayers(nsIDOMElement **aElements, uint32_t count, uint32_t *_retval);
|
||||
nsresult GetFileId(const /*JS::Value*/ void *aFile, JSContext *cx, int64_t *_retval);
|
||||
nsresult GetFilePath(void /*JS::HandleValue*/ *aFile, JSContext *cx, nsAString *_retval);
|
||||
nsresult GetFileReferences(const nsAString *aDatabaseName, int64_t aId, void /*JS::HandleValue*/ *aOptions,
|
||||
int32_t *aRefCnt, int32_t *aDBRefCnt, int32_t *aSliceRefCnt, JSContext* cx, bool *_retval);
|
||||
nsresult IsIncrementalGCEnabled(JSContext *cx, bool *_retval);
|
||||
|
@ -3078,8 +3094,10 @@ interface nsIDOMWindowUtils : nsISupports
|
|||
nsresult EnableDialogs();
|
||||
nsresult AreDialogsEnabled(bool *_retval);
|
||||
nsresult LoadSheet(nsIURI *sheetURI, uint32_t type);
|
||||
nsresult LoadSheetUsingURIString(const nsACString *sheetURI, uint32_t type);
|
||||
nsresult AddSheet(nsIDOMStyleSheet *sheet, uint32_t type);
|
||||
nsresult RemoveSheet(nsIURI *sheetURI, uint32_t type);
|
||||
nsresult RemoveSheetUsingURIString(const nsACString *sheetURI, uint32_t type);
|
||||
nsresult GetIsHandlingUserInput(bool *aIsHandlingUserInput);
|
||||
nsresult AllowScriptsToClose();
|
||||
nsresult GetIsParentWindowMainWidgetVisible(bool *aIsParentWindowMainWidgetVisible);
|
||||
|
@ -3089,15 +3107,22 @@ interface nsIDOMWindowUtils : nsISupports
|
|||
nsresult RunInStableState(nsIRunnable *runnable);
|
||||
nsresult RunBeforeNextEvent(nsIRunnable *runnable);
|
||||
nsresult GetOMTAStyle(nsIDOMElement *aElement, const nsAString *aProperty, nsAString *_retval);
|
||||
nsresult RequestCompositorProperty(const nsAString *aProperty, float *_retval);
|
||||
nsresult SetHandlingUserInput(bool aHandlingInput, void /*nsIJSRAIIHelper*/ **_retval);
|
||||
nsresult GetContentAPZTestData(JSContext *cx, int /*JS::MutableHandleValue*/ _retval);
|
||||
nsresult GetCompositorAPZTestData(JSContext *cx, void /*JS::MutableHandleValue*/ *_retval);
|
||||
nsresult PostRestyleSelfEvent(nsIDOMElement *aElement);
|
||||
nsresult GetAudioMuted(bool *aAudioMuted) ;
|
||||
nsresult SetAudioMuted(bool aAudioMuted);
|
||||
nsresult GetAudioVolume(float *aAudioVolume);
|
||||
nsresult SetAudioVolume(float aAudioVolume);
|
||||
nsresult XpconnectArgument(nsIDOMWindowUtils *aThis);
|
||||
nsresult AskPermission(void /*nsIContentPermissionRequest*/ *aRequest);
|
||||
nsresult GetFramesConstructed(uint64_t *aFramesConstructed);
|
||||
nsresult GetFramesReflowed(uint64_t *aFramesReflowed);
|
||||
nsresult SetChromeMargin(int32_t aTop, int32_t aRight, int32_t aBottom, int32_t aLeft);
|
||||
nsresult GetServiceWorkersTestingEnabled(bool *aServiceWorkersTestingEnabled);
|
||||
nsresult SetServiceWorkersTestingEnabled(bool aServiceWorkersTestingEnabled);
|
||||
}
|
||||
|
||||
cpp_quote("#define CONTEXT_NONE 0x00")
|
||||
|
@ -3389,7 +3414,7 @@ interface nsIController : nsISupports
|
|||
|
||||
[
|
||||
object,
|
||||
uuid(697a2fe1-5549-48e7-9a1a-c29dab14e239),
|
||||
uuid(70f7e9ea-a9bf-48cc-ad9d-8acaeed29b68),
|
||||
local
|
||||
]
|
||||
interface nsIContent : nsISupports
|
||||
|
@ -3399,7 +3424,7 @@ interface nsIContent : nsISupports
|
|||
|
||||
[
|
||||
object,
|
||||
uuid(613ea294-0288-48b4-9e7b-0fe93f8cf895),
|
||||
uuid(0b78eabe-8b94-4ea1-9331-5d48e83ada95),
|
||||
local
|
||||
]
|
||||
interface nsIDocument : nsISupports
|
||||
|
@ -3433,12 +3458,13 @@ interface nsIContentSerializer : nsISupports
|
|||
|
||||
[
|
||||
object,
|
||||
uuid(04714a01-e02f-4ef5-a388-612451d0db16),
|
||||
uuid(094be624-f0bf-400f-89e2-6a84baab9474),
|
||||
local
|
||||
]
|
||||
interface nsIEditor : nsISupports
|
||||
{
|
||||
nsresult GetSelection([out] nsISelection *_retval);
|
||||
nsresult FinalizeSelection();
|
||||
nsresult Init([in] nsIDOMDocument *doc, nsIContent *aRoot, nsISelectionController *aSelCon, uint32_t aFlags, nsAString *initialValue);
|
||||
nsresult SetAttributeOrEquivalent([in] nsIDOMElement *element, [in] const nsAString *sourceAttrName, [in] const nsAString *sourceAttrValue, [in] bool aSuppressTransaction);
|
||||
nsresult RemoveAttributeOrEquivalent([in] nsIDOMElement *element, [in] const nsAString *sourceAttrName, [in] bool aSuppressTransaction);
|
||||
|
@ -3484,6 +3510,7 @@ interface nsIEditor : nsISupports
|
|||
nsresult CanCut([out] bool *_retval);
|
||||
nsresult Copy();
|
||||
nsresult CanCopy([out] bool *_retval);
|
||||
nsresult CanDelete(bool *_retval);
|
||||
nsresult Paste([in] int32_t aSelectionType);
|
||||
nsresult PasteTransferable(nsITransferable *aTransferable);
|
||||
nsresult CanPaste([in] int32_t aSelectionType, [out] bool *_retval);
|
||||
|
@ -3523,7 +3550,7 @@ interface nsIEditor : nsISupports
|
|||
|
||||
[
|
||||
object,
|
||||
uuid(393a364f-e8e2-48a1-a271-a0067b6bac9b),
|
||||
uuid(87ee993e-985f-4a43-a974-0d9512da2fb0),
|
||||
local
|
||||
]
|
||||
interface nsIHTMLEditor : nsISupports
|
||||
|
@ -3581,7 +3608,6 @@ interface nsIHTMLEditor : nsISupports
|
|||
nsresult IsAnonymousElement([in] nsIDOMElement *aElement, [out] bool *_retval);
|
||||
nsresult GetReturnInParagraphCreatesNewParagraph([out] bool *_retval);
|
||||
nsresult SetReturnInParagraphCreatesNewParagraph([in] bool prb);
|
||||
nsresult BreakIsVisible(nsIDOMNode *aNode, bool *_retval);
|
||||
void /*Element*/ *GetActiveEditingHost();
|
||||
}
|
||||
|
||||
|
@ -3711,12 +3737,13 @@ interface nsIContentViewer : nsISupports
|
|||
|
||||
[
|
||||
object,
|
||||
uuid(c8d3b1e1-565a-427e-9d68-b109910ce9b7),
|
||||
uuid(c63e9d64-490d-48bf-8013-b5d8ee4dbc25),
|
||||
local
|
||||
]
|
||||
interface nsIDocShellLoadInfo : nsISupports
|
||||
{
|
||||
typedef int nsDocShellInfoLoadType;
|
||||
typedef int32_t nsDocShellInfoLoadType;
|
||||
typedef uint32_t nsDocShellInfoReferrerPolicy;
|
||||
|
||||
nsresult GetReferrer(nsIURI **aReferrer);
|
||||
nsresult SetReferrer(nsIURI *aReferrer);
|
||||
|
@ -3738,6 +3765,8 @@ interface nsIDocShellLoadInfo : nsISupports
|
|||
nsresult SetHeadersStream(nsIInputStream *aHeadersStream);
|
||||
nsresult GetSendReferrer(bool *aSendReferrer);
|
||||
nsresult SetSendReferrer(bool aSendReferrer);
|
||||
nsresult GetReferrerPolicy(nsDocShellInfoReferrerPolicy *aReferrerPolicy);
|
||||
nsresult SetReferrerPolicy(nsDocShellInfoReferrerPolicy aReferrerPolicy);
|
||||
nsresult GetIsSrcdocLoad(bool *aIsSrcdocLoad);
|
||||
nsresult GetSrcdocData(nsAString *aSrcdocData);
|
||||
nsresult SetSrcdocData(const nsAString *aSrcdocData);
|
||||
|
@ -3749,7 +3778,7 @@ interface nsIDocShellLoadInfo : nsISupports
|
|||
|
||||
[
|
||||
object,
|
||||
uuid(3646c915-df79-4500-8b57-c65ab9c3b39f),
|
||||
uuid(696b32a1-3cf1-4909-b501-474b25fc7954),
|
||||
local
|
||||
]
|
||||
interface nsIDocShell : nsIDocShellTreeItem
|
||||
|
@ -3757,9 +3786,10 @@ interface nsIDocShell : nsIDocShellTreeItem
|
|||
nsresult LoadURI(nsIURI *uri, nsIDocShellLoadInfo *loadInfo, uint32_t aLoadFlags, bool firstParty);
|
||||
nsresult LoadStream(nsIInputStream *aStream, nsIURI *aURI, const nsACString *aContentType,
|
||||
const nsACString *aContentCharset, nsIDocShellLoadInfo *aLoadInfo);
|
||||
nsresult InternalLoad(nsIURI *aURI, nsIURI *aReferrer, nsISupports *aOwner, uint32_t aFlags, const PRUnichar *aWindowTarget,
|
||||
const char *aTypeHint, nsACString *aFileName, nsIInputStream *aPostDataStream, nsIInputStream *aHeadersStream,
|
||||
uint32_t aLoadFlags, nsISHEntry *aSHEntry, bool firstParty, const nsAString *aSrcdoc, nsIDocShell *aSourceDocShell,
|
||||
nsresult InternalLoad(nsIURI *aURI, nsIURI *aReferrer, uint32_t aReferrerPolicy, nsISupports *aOwner,
|
||||
uint32_t aFlags, const PRUnichar *aWindowTarget, const char *aTypeHint, nsACString *aFileName,
|
||||
nsIInputStream *aPostDataStream, nsIInputStream *aHeadersStream, uint32_t aLoadFlags,
|
||||
nsISHEntry *aSHEntry, bool firstParty, const nsAString *aSrcdoc, nsIDocShell *aSourceDocShell,
|
||||
nsIURI *aBaseURI, nsIDocShell **aDocShell, nsIRequest **aRequest);
|
||||
nsresult AddState(jsval *aData, const nsAString *aTitle, const nsAString *aURL, bool aReplace, JSContext *cx);
|
||||
nsresult CreateLoadInfo(nsIDocShellLoadInfo **loadInfo);
|
||||
|
@ -3792,6 +3822,8 @@ interface nsIDocShell : nsIDocShellTreeItem
|
|||
nsresult SetAllowWindowControl(bool aAllowWindowControl);
|
||||
nsresult GetAllowContentRetargeting(bool *aAllowContentRetargeting);
|
||||
nsresult SetAllowContentRetargeting(bool aAllowContentRetargeting);
|
||||
nsresult GetAllowContentRetargetingOnChildren(bool *aAllowContentRetargetingOnChildren);
|
||||
nsresult SetAllowContentRetargetingOnChildren(bool aAllowContentRetargetingOnChildren);
|
||||
nsresult GetDocShellEnumerator(int32_t aItemType, int32_t aDirection, nsISimpleEnumerator **_retval);
|
||||
nsresult GetAppType(uint32_t *aAppType);
|
||||
nsresult SetAppType(uint32_t aAppType);
|
||||
|
@ -3848,6 +3880,8 @@ interface nsIDocShell : nsIDocShellTreeItem
|
|||
nsresult GetCanExecuteScripts(bool *aCanExecuteScripts);
|
||||
nsresult GetIsActive(bool *aIsActive);
|
||||
nsresult SetIsActive(bool aIsActive);
|
||||
nsresult SetIsPrerendered(bool prerendered);
|
||||
nsresult GetIsPrerendered(bool *aIsPrerendered);
|
||||
nsresult GetHistoryID(uint64_t *aHistoryID);
|
||||
nsresult GetIsAppTab(bool *aIsAppTab);
|
||||
nsresult SetIsAppTab(bool aIsAppTab);
|
||||
|
@ -3859,8 +3893,10 @@ interface nsIDocShell : nsIDocShellTreeItem
|
|||
nsresult SetForcedCharset(nsIAtom *aForcedCharset);
|
||||
void SetParentCharset(const nsACString *parentCharset, int32_t parentCharsetSource, nsIPrincipal *parentCharsetPrincipal);
|
||||
void GetParentCharset(nsACString *parentCharset, int32_t *parentCharsetSource, nsIPrincipal **parentCharsetPrincipal);
|
||||
nsresult GetParentCharsetSource(int32_t *aParentCharsetSource);
|
||||
nsresult SetParentCharsetSource(int32_t aParentCharsetSource);
|
||||
nsresult GetRecordProfileTimelineMarkers(bool *aRecordProfileTimelineMarkers);
|
||||
nsresult SetRecordProfileTimelineMarkers(bool aRecordProfileTimelineMarkers);
|
||||
nsresult Now(int /* DOMHighResTimeStamp */ *_retval);
|
||||
nsresult PopProfileTimelineMarkers(JSContext *cx, void /*JS::MutableHandleValue*/ *_retval);
|
||||
nsresult AddWeakPrivacyTransitionObserver(nsIPrivacyTransitionObserver *obs);
|
||||
nsresult AddWeakReflowObserver(nsISupports /*nsIReflowObserver*/ *obs);
|
||||
nsresult RemoveWeakReflowObserver(nsISupports /*nsIReflowObserver*/ *obs);
|
||||
|
@ -3914,10 +3950,16 @@ interface nsIDocShell : nsIDocShellTreeItem
|
|||
nsresult GetDeviceSizeIsPageSize(bool *aDeviceSizeIsPageSize);
|
||||
nsresult SetDeviceSizeIsPageSize(bool aDeviceSizeIsPageSize);
|
||||
void /* thiscall */ SetOpener(void /*nsITabParent*/ *aOpener);
|
||||
void /* thiscall nsITabParent */ *GetOpener(void) = 0;
|
||||
void /* thiscall */ SetOpenedRemote(void /*nsITabParent*/ *aOpenedRemote);
|
||||
void /* thiscall nsITabParent */ *GetOpenedRemote();
|
||||
void /*mozilla::dom::URLSearchParams */ *GetURLSearchParams(void) = 0;
|
||||
void /* thiscall nsITabParent */ *GetOpener();
|
||||
void /*mozilla::dom::URLSearchParams */ *GetURLSearchParams();
|
||||
void /* thiscall */ NotifyJSRunToCompletionStart(const char *aReason, const char16_t *functionName,
|
||||
const char16_t *fileName, uint32_t lineNumber);
|
||||
void /* thiscall */ NotifyJSRunToCompletionStop();
|
||||
nsresult GetHasLoadedNonBlankURI(bool *aHasLoadedNonBlankURI);
|
||||
nsresult GetPaymentRequestId(nsAString *aPaymentRequestId);
|
||||
nsresult SetPaymentRequestId(const nsAString *aPaymentRequestId);
|
||||
nsresult GetWindowDraggingAllowed(bool *aWindowDraggingAllowed);
|
||||
nsresult SetWindowDraggingAllowed(bool aWindowDraggingAllowed);
|
||||
}
|
||||
|
||||
[
|
||||
|
@ -4047,4 +4089,82 @@ interface nsIPluginInstance : nsISupports
|
|||
nsresult GetDOMElement(nsIDOMElement **aDOMElement);
|
||||
}
|
||||
|
||||
[
|
||||
object,
|
||||
uuid(11afa8be-d997-4e07-a6a3-6f872ec3ee7f),
|
||||
local
|
||||
]
|
||||
interface nsIGlobalObject : nsISupports
|
||||
{
|
||||
}
|
||||
|
||||
[
|
||||
object,
|
||||
uuid(6f54214c-7175-498d-9d2d-0429e38c2869),
|
||||
local
|
||||
]
|
||||
interface nsIXMLHttpRequest : nsISupports
|
||||
{
|
||||
nsresult GetChannel(nsIChannel **aChannel);
|
||||
nsresult GetResponseXML(nsIDOMDocument **aResponseXML);
|
||||
nsresult GetResponseText(nsAString *aResponseText);
|
||||
nsresult GetResponseType(nsAString *aResponseType);
|
||||
nsresult SetResponseType(const nsAString *aResponseType);
|
||||
nsresult GetResponse(JSContext*cx, int /*JS::MutableHandleValue*/ aResponse);
|
||||
nsresult GetStatus(uint32_t *aStatus);
|
||||
nsresult GetStatusText(nsACString *aStatusText);
|
||||
nsresult SlowAbort();
|
||||
nsresult GetAllResponseHeaders(nsACString *_retval);
|
||||
nsresult GetResponseHeader(const nsACString *header, nsACString *_retval);
|
||||
nsresult Open(const nsACString *method, const nsACString *url, bool async, const nsAString *user, const nsAString *password, uint8_t _argc);
|
||||
nsresult Send(nsIVariant *body);
|
||||
nsresult SetRequestHeader(const nsACString *header, const nsACString *value);
|
||||
nsresult GetTimeout(uint32_t *aTimeout);
|
||||
nsresult SetTimeout(uint32_t aTimeout);
|
||||
nsresult GetReadyState(uint16_t *aReadyState);
|
||||
nsresult SlowOverrideMimeType(const nsAString *mimetype);
|
||||
nsresult GetMozBackgroundRequest(bool *aMozBackgroundRequest);
|
||||
nsresult SetMozBackgroundRequest(bool aMozBackgroundRequest);
|
||||
nsresult GetWithCredentials(bool *aWithCredentials);
|
||||
nsresult SetWithCredentials(bool aWithCredentials);
|
||||
nsresult Init(nsIPrincipal *principal, nsIScriptContext *scriptContext, nsIGlobalObject *globalObject, nsIURI *baseURI, nsILoadGroup *loadGroup);
|
||||
nsresult GetUpload(nsIXMLHttpRequestUpload **aUpload);
|
||||
nsresult GetOnreadystatechange(JSContext*cx, int /*JS::MutableHandleValue*/ aOnreadystatechange);
|
||||
nsresult SetOnreadystatechange(JSContext*cx, int /*JS::HandleValue*/ aOnreadystatechange);
|
||||
nsresult GetMozAnon(bool *aMozAnon);
|
||||
nsresult GetMozSystem(bool *aMozSystem);
|
||||
}
|
||||
|
||||
[
|
||||
object,
|
||||
uuid(ba602ca6-dc7a-457e-a57a-ee5b343fd863),
|
||||
local
|
||||
]
|
||||
interface nsIScriptSecurityManager : nsISupports {
|
||||
nsresult CanCreateWrapper(JSContext *aJSContext, const nsIID *aIID, nsISupports *aObj, nsIClassInfo *aClassInfo);
|
||||
nsresult CanCreateInstance(JSContext *aJSContext, const nsCID *aCID);
|
||||
nsresult CanGetService(JSContext *aJSContext, const nsCID *aCID);
|
||||
nsresult CheckLoadURIFromScript(JSContext *cx, nsIURI *uri);
|
||||
nsresult CheckLoadURIWithPrincipal(nsIPrincipal *aPrincipal, nsIURI *uri, uint32_t flags);
|
||||
nsresult CheckLoadURIStrWithPrincipal(nsIPrincipal *aPrincipal, const nsACString *uri, uint32_t flags);
|
||||
nsresult ScriptAllowed(JSObject *aGlobal);
|
||||
nsresult GetSystemPrincipal(nsIPrincipal **_retval);
|
||||
nsresult GetSimpleCodebasePrincipal(nsIURI *aURI, nsIPrincipal **_retval);
|
||||
nsresult GetAppCodebasePrincipal(nsIURI *uri, uint32_t appId, bool inMozBrowser, nsIPrincipal **_retval);
|
||||
nsresult GetLoadContextCodebasePrincipal(nsIURI *uri, nsILoadContext *loadContext, nsIPrincipal **_retval);
|
||||
nsresult GetDocShellCodebasePrincipal(nsIURI *uri, nsIDocShell *docShell, nsIPrincipal **_retval);
|
||||
nsresult GetNoAppCodebasePrincipal(nsIURI *uri, nsIPrincipal **_retval);
|
||||
nsresult GetCodebasePrincipal(nsIURI *uri, nsIPrincipal **_retval);
|
||||
nsresult CheckSameOriginURI(nsIURI *aSourceURI, nsIURI *aTargetURI, bool reportError);
|
||||
nsresult GetChannelResultPrincipal(nsIChannel *aChannel, nsIPrincipal **_retval);
|
||||
nsresult GetChannelURIPrincipal(nsIChannel *aChannel, nsIPrincipal **_retval);
|
||||
nsresult IsSystemPrincipal(nsIPrincipal *aPrincipal, bool *_retval);
|
||||
nsresult GetJarPrefix(uint32_t appId, bool inMozBrowser, nsACString *_retval);
|
||||
nsresult ActivateDomainPolicy(nsIDomainPolicy **_retval);
|
||||
nsresult GetDomainPolicyActive(bool *aDomainPolicyActive);
|
||||
nsresult ActivateDomainPolicyInternal(nsIDomainPolicy **_retval);
|
||||
void CloneDomainPolicy(int /*mozilla::dom::DomainPolicyClone*/ *aClone);
|
||||
nsresult PolicyAllowsScript(nsIURI *aDomain, bool *_retval);
|
||||
}
|
||||
|
||||
cpp_quote("DEFINE_GUID(IID_nsCycleCollectionISupports, 0xc61eac14,0x5f7a,0x4481,0x96,0x5e,0x7e,0xaa,0x6e,0xff,0xa8,0x5f);")
|
||||
|
|
|
@ -342,7 +342,7 @@ static http_header_t *find_http_header(struct list *headers, const WCHAR *name,
|
|||
http_header_t *iter;
|
||||
|
||||
LIST_FOR_EACH_ENTRY(iter, headers, http_header_t, entry) {
|
||||
if(!strcmpiW(iter->header, name))
|
||||
if(!strncmpiW(iter->header, name, len) && !iter->header[len])
|
||||
return iter;
|
||||
}
|
||||
|
||||
|
@ -1256,6 +1256,20 @@ static nsresult NSAPI nsChannel_SetReferrer(nsIHttpChannel *iface, nsIURI *aRefe
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
static nsresult NSAPI nsChannel_GetReferrerPolicy(nsIHttpChannel *iface, UINT32 *aReferrerPolicy)
|
||||
{
|
||||
nsChannel *This = impl_from_nsIHttpChannel(iface);
|
||||
FIXME("(%p)->(%p)\n", This, aReferrerPolicy);
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
static nsresult NSAPI nsChannel_SetReferrerWithPolicy(nsIHttpChannel *iface, nsIURI *aReferrer, UINT32 aReferrerPolicy)
|
||||
{
|
||||
nsChannel *This = impl_from_nsIHttpChannel(iface);
|
||||
FIXME("(%p)->(%p %x)\n", This, aReferrer, aReferrerPolicy);
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
static nsresult NSAPI nsChannel_GetRequestHeader(nsIHttpChannel *iface,
|
||||
const nsACString *aHeader, nsACString *_retval)
|
||||
{
|
||||
|
@ -1359,9 +1373,10 @@ static nsresult NSAPI nsChannel_GetResponseStatusText(nsIHttpChannel *iface,
|
|||
{
|
||||
nsChannel *This = impl_from_nsIHttpChannel(iface);
|
||||
|
||||
FIXME("(%p)->(%p)\n", This, aResponseStatusText);
|
||||
TRACE("(%p)->(%p)\n", This, aResponseStatusText);
|
||||
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
nsACString_SetData(aResponseStatusText, This->response_status_text);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
static nsresult NSAPI nsChannel_GetRequestSucceeded(nsIHttpChannel *iface,
|
||||
|
@ -1433,6 +1448,15 @@ static nsresult NSAPI nsChannel_IsNoCacheResponse(nsIHttpChannel *iface, cpp_boo
|
|||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
static nsresult NSAPI nsChannel_IsPrivateResponse(nsIHttpChannel *iface, cpp_bool *_retval)
|
||||
{
|
||||
nsChannel *This = impl_from_nsIHttpChannel(iface);
|
||||
|
||||
FIXME("(%p)->(%p)\n", This, _retval);
|
||||
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
static nsresult NSAPI nsChannel_RedirectTo(nsIHttpChannel *iface, nsIURI *aNewURI)
|
||||
{
|
||||
nsChannel *This = impl_from_nsIHttpChannel(iface);
|
||||
|
@ -1483,6 +1507,8 @@ static const nsIHttpChannelVtbl nsChannelVtbl = {
|
|||
nsChannel_SetRequestMethod,
|
||||
nsChannel_GetReferrer,
|
||||
nsChannel_SetReferrer,
|
||||
nsChannel_GetReferrerPolicy,
|
||||
nsChannel_SetReferrerWithPolicy,
|
||||
nsChannel_GetRequestHeader,
|
||||
nsChannel_SetRequestHeader,
|
||||
nsChannel_VisitRequestHeaders,
|
||||
|
@ -1500,6 +1526,7 @@ static const nsIHttpChannelVtbl nsChannelVtbl = {
|
|||
nsChannel_VisitResponseHeaders,
|
||||
nsChannel_IsNoStoreResponse,
|
||||
nsChannel_IsNoCacheResponse,
|
||||
nsChannel_IsPrivateResponse,
|
||||
nsChannel_RedirectTo
|
||||
};
|
||||
|
||||
|
@ -1790,34 +1817,6 @@ static nsresult NSAPI nsHttpChannelInternal_SetAllowSpdy(nsIHttpChannelInternal
|
|||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
static nsresult NSAPI nsHttpChannelInternal_GetLoadAsBlocking(nsIHttpChannelInternal *iface, cpp_bool *aLoadAsBlocking)
|
||||
{
|
||||
nsChannel *This = impl_from_nsIHttpChannelInternal(iface);
|
||||
FIXME("(%p)->(%p)\n", This, aLoadAsBlocking);
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
static nsresult NSAPI nsHttpChannelInternal_SetLoadAsBlocking(nsIHttpChannelInternal *iface, cpp_bool aLoadAsBlocking)
|
||||
{
|
||||
nsChannel *This = impl_from_nsIHttpChannelInternal(iface);
|
||||
FIXME("(%p)->(%x)\n", This, aLoadAsBlocking);
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
static nsresult NSAPI nsHttpChannelInternal_GetLoadUnblocked(nsIHttpChannelInternal *iface, cpp_bool *aLoadUnblocked)
|
||||
{
|
||||
nsChannel *This = impl_from_nsIHttpChannelInternal(iface);
|
||||
FIXME("(%p)->(%p)\n", This, aLoadUnblocked);
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
static nsresult NSAPI nsHttpChannelInternal_SetLoadUnblocked(nsIHttpChannelInternal *iface, cpp_bool aLoadUnblocked)
|
||||
{
|
||||
nsChannel *This = impl_from_nsIHttpChannelInternal(iface);
|
||||
FIXME("(%p)->(%x)\n", This, aLoadUnblocked);
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
static nsresult NSAPI nsHttpChannelInternal_GetResponseTimeoutEnabled(nsIHttpChannelInternal *iface,
|
||||
cpp_bool *aResponseTimeoutEnabled)
|
||||
{
|
||||
|
@ -1841,6 +1840,20 @@ static nsresult NSAPI nsHttpChannelInternal_GetApiRedirectToURI(nsIHttpChannelIn
|
|||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
static nsresult NSAPI nsHttpChannelInternal_GetAllowAltSvc(nsIHttpChannelInternal *iface, cpp_bool *aAllowAltSvc)
|
||||
{
|
||||
nsChannel *This = impl_from_nsIHttpChannelInternal(iface);
|
||||
FIXME("(%p)->(%p)\n", This, aAllowAltSvc);
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
static nsresult NSAPI nsHttpChannelInternal_SetAllowAltSvc(nsIHttpChannelInternal *iface, cpp_bool aAllowAltSvc)
|
||||
{
|
||||
nsChannel *This = impl_from_nsIHttpChannelInternal(iface);
|
||||
FIXME("(%p)->(%x)\n", This, aAllowAltSvc);
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
static nsresult NSAPI nsHttpChannelInternal_AddRedirect(nsIHttpChannelInternal *iface, nsIPrincipal *aPrincipal)
|
||||
{
|
||||
nsChannel *This = impl_from_nsIHttpChannelInternal(iface);
|
||||
|
@ -1855,6 +1868,80 @@ static nsresult NSAPI nsHttpChannelInternal_GetLastModifiedTime(nsIHttpChannelIn
|
|||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
static nsresult NSAPI nsHttpChannelInternal_ForceNoIntercept(nsIHttpChannelInternal *iface)
|
||||
{
|
||||
nsChannel *This = impl_from_nsIHttpChannelInternal(iface);
|
||||
FIXME("(%p)\n", This);
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
static nsresult NSAPI nsHttpChannelInternal_GetCorsIncludeCredentials(nsIHttpChannelInternal *iface,
|
||||
cpp_bool *aCorsIncludeCredentials)
|
||||
{
|
||||
nsChannel *This = impl_from_nsIHttpChannelInternal(iface);
|
||||
FIXME("(%p)->(%p)\n", This, aCorsIncludeCredentials);
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
static nsresult NSAPI nsHttpChannelInternal_SetCorsIncludeCredentials(nsIHttpChannelInternal *iface,
|
||||
cpp_bool aCorsIncludeCredentials)
|
||||
{
|
||||
nsChannel *This = impl_from_nsIHttpChannelInternal(iface);
|
||||
FIXME("(%p)->(%x)\n", This, aCorsIncludeCredentials);
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
static nsresult NSAPI nsHttpChannelInternal_GetCorsMode(nsIHttpChannelInternal *iface, UINT32 *aCorsMode)
|
||||
{
|
||||
nsChannel *This = impl_from_nsIHttpChannelInternal(iface);
|
||||
FIXME("(%p)->(%p)\n", This, aCorsMode);
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
static nsresult NSAPI nsHttpChannelInternal_SetCorsMode(nsIHttpChannelInternal *iface, UINT32 aCorsMode)
|
||||
{
|
||||
nsChannel *This = impl_from_nsIHttpChannelInternal(iface);
|
||||
FIXME("(%p)->(%d)\n", This, aCorsMode);
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
static nsresult NSAPI nsHttpChannelInternal_GetTopWindowURI(nsIHttpChannelInternal *iface, nsIURI **aTopWindowURI)
|
||||
{
|
||||
nsChannel *This = impl_from_nsIHttpChannelInternal(iface);
|
||||
FIXME("(%p)->(%p)\n", This, aTopWindowURI);
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
static nsresult NSAPI nsHttpChannelInternal_GetNetworkInterfaceId(nsIHttpChannelInternal *iface,
|
||||
nsACString *aNetworkInterfaceId)
|
||||
{
|
||||
nsChannel *This = impl_from_nsIHttpChannelInternal(iface);
|
||||
FIXME("(%p)->(%p)\n", This, aNetworkInterfaceId);
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
static nsresult NSAPI nsHttpChannelInternal_SetNetworkInterfaceId(nsIHttpChannelInternal *iface,
|
||||
const nsACString *aNetworkInterfaceId)
|
||||
{
|
||||
nsChannel *This = impl_from_nsIHttpChannelInternal(iface);
|
||||
FIXME("(%p)->(%s)\n", This, debugstr_nsacstr(aNetworkInterfaceId));
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
static nsresult NSAPI nsHttpChannelInternal_ContinueBeginConnect(nsIHttpChannelInternal *iface)
|
||||
{
|
||||
nsChannel *This = impl_from_nsIHttpChannelInternal(iface);
|
||||
FIXME("(%p)\n", This);
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
static nsresult NSAPI nsHttpChannelInternal_GetProxyURI(nsIHttpChannelInternal *iface, nsIURI **aProxyURI)
|
||||
{
|
||||
nsChannel *This = impl_from_nsIHttpChannelInternal(iface);
|
||||
FIXME("(%p)->(%p)\n", This, aProxyURI);
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
static const nsIHttpChannelInternalVtbl nsHttpChannelInternalVtbl = {
|
||||
nsHttpChannelInternal_QueryInterface,
|
||||
nsHttpChannelInternal_AddRef,
|
||||
|
@ -1879,15 +1966,23 @@ static const nsIHttpChannelInternalVtbl nsHttpChannelInternalVtbl = {
|
|||
nsHttpChannelInternal_HTTPUpgrade,
|
||||
nsHttpChannelInternal_GetAllowSpdy,
|
||||
nsHttpChannelInternal_SetAllowSpdy,
|
||||
nsHttpChannelInternal_GetLoadAsBlocking,
|
||||
nsHttpChannelInternal_SetLoadAsBlocking,
|
||||
nsHttpChannelInternal_GetLoadUnblocked,
|
||||
nsHttpChannelInternal_SetLoadUnblocked,
|
||||
nsHttpChannelInternal_GetResponseTimeoutEnabled,
|
||||
nsHttpChannelInternal_SetResponseTimeoutEnabled,
|
||||
nsHttpChannelInternal_GetApiRedirectToURI,
|
||||
nsHttpChannelInternal_GetAllowAltSvc,
|
||||
nsHttpChannelInternal_SetAllowAltSvc,
|
||||
nsHttpChannelInternal_AddRedirect,
|
||||
nsHttpChannelInternal_GetLastModifiedTime
|
||||
nsHttpChannelInternal_GetLastModifiedTime,
|
||||
nsHttpChannelInternal_ForceNoIntercept,
|
||||
nsHttpChannelInternal_GetCorsIncludeCredentials,
|
||||
nsHttpChannelInternal_SetCorsIncludeCredentials,
|
||||
nsHttpChannelInternal_GetCorsMode,
|
||||
nsHttpChannelInternal_SetCorsMode,
|
||||
nsHttpChannelInternal_GetTopWindowURI,
|
||||
nsHttpChannelInternal_GetNetworkInterfaceId,
|
||||
nsHttpChannelInternal_SetNetworkInterfaceId,
|
||||
nsHttpChannelInternal_ContinueBeginConnect,
|
||||
nsHttpChannelInternal_GetProxyURI
|
||||
};
|
||||
|
||||
|
||||
|
@ -3321,6 +3416,18 @@ static nsresult NSAPI nsProtocolHandler_NewURI(nsIProtocolHandler *iface,
|
|||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
static nsresult NSAPI nsProtocolHandler_NewChannel2(nsIProtocolHandler *iface,
|
||||
nsIURI *aURI, nsILoadInfo *aLoadInfo, nsIChannel **_retval)
|
||||
{
|
||||
nsProtocolHandler *This = impl_from_nsIProtocolHandler(iface);
|
||||
|
||||
TRACE("(%p)->(%p %p %p)\n", This, aURI, aLoadInfo, _retval);
|
||||
|
||||
if(This->nshandler)
|
||||
return nsIProtocolHandler_NewChannel2(This->nshandler, aURI, aLoadInfo, _retval);
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
static nsresult NSAPI nsProtocolHandler_NewChannel(nsIProtocolHandler *iface,
|
||||
nsIURI *aURI, nsIChannel **_retval)
|
||||
{
|
||||
|
@ -3353,6 +3460,7 @@ static const nsIProtocolHandlerVtbl nsProtocolHandlerVtbl = {
|
|||
nsProtocolHandler_GetDefaultPort,
|
||||
nsProtocolHandler_GetProtocolFlags,
|
||||
nsProtocolHandler_NewURI,
|
||||
nsProtocolHandler_NewChannel2,
|
||||
nsProtocolHandler_NewChannel,
|
||||
nsProtocolHandler_AllowPort
|
||||
};
|
||||
|
@ -3416,7 +3524,7 @@ static nsresult NSAPI nsIOService_GetProtocolFlags(nsIIOService *iface, const ch
|
|||
|
||||
static BOOL is_gecko_special_uri(const char *spec)
|
||||
{
|
||||
static const char *special_schemes[] = {"chrome:", "jar:", "moz-safe-about", "resource:", "javascript:", "wyciwyg:"};
|
||||
static const char *special_schemes[] = {"chrome:", "data:", "jar:", "moz-safe-about", "resource:", "javascript:", "wyciwyg:"};
|
||||
unsigned int i;
|
||||
|
||||
for(i=0; i < sizeof(special_schemes)/sizeof(*special_schemes); i++) {
|
||||
|
@ -3514,19 +3622,16 @@ static nsresult NSAPI nsIOService_NewFileURI(nsIIOService *iface, nsIFile *aFile
|
|||
return nsIIOService_NewFileURI(nsio, aFile, _retval);
|
||||
}
|
||||
|
||||
static nsresult NSAPI nsIOService_NewChannelFromURI(nsIIOService *iface, nsIURI *aURI,
|
||||
nsIChannel **_retval)
|
||||
static nsresult new_channel_from_uri(nsIURI *uri, nsILoadInfo *load_info, nsIChannel **_retval)
|
||||
{
|
||||
nsWineURI *wine_uri;
|
||||
nsChannel *ret;
|
||||
nsresult nsres;
|
||||
|
||||
TRACE("(%p %p)\n", aURI, _retval);
|
||||
|
||||
nsres = nsIURI_QueryInterface(aURI, &IID_nsWineURI, (void**)&wine_uri);
|
||||
nsres = nsIURI_QueryInterface(uri, &IID_nsWineURI, (void**)&wine_uri);
|
||||
if(NS_FAILED(nsres)) {
|
||||
TRACE("Could not get nsWineURI: %08x\n", nsres);
|
||||
return nsIIOService_NewChannelFromURI(nsio, aURI, _retval);
|
||||
return nsIIOService_NewChannelFromURI(nsio, uri, _retval);
|
||||
}
|
||||
|
||||
nsres = create_nschannel(wine_uri, &ret);
|
||||
|
@ -3534,13 +3639,62 @@ static nsresult NSAPI nsIOService_NewChannelFromURI(nsIIOService *iface, nsIURI
|
|||
if(NS_FAILED(nsres))
|
||||
return nsres;
|
||||
|
||||
nsIURI_AddRef(aURI);
|
||||
ret->original_uri = aURI;
|
||||
nsIURI_AddRef(uri);
|
||||
ret->original_uri = uri;
|
||||
|
||||
if(load_info)
|
||||
nsIHttpChannel_SetLoadInfo(&ret->nsIHttpChannel_iface, load_info);
|
||||
|
||||
*_retval = (nsIChannel*)&ret->nsIHttpChannel_iface;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
static nsresult NSAPI nsIOService_NewChannelFromURI2(nsIIOService *iface, nsIURI *aURI,
|
||||
nsIDOMNode *aLoadingNode, nsIPrincipal *aLoadingPrincipal, nsIPrincipal *aTriggeringPrincipal,
|
||||
UINT32 aSecurityFlags, UINT32 aContentPolicyType, nsIChannel **_retval)
|
||||
{
|
||||
nsILoadInfo *load_info = NULL;
|
||||
nsresult nsres;
|
||||
|
||||
TRACE("(%p %p %p %p %x %d %p)\n", aURI, aLoadingNode, aLoadingPrincipal, aTriggeringPrincipal,
|
||||
aSecurityFlags, aContentPolicyType, _retval);
|
||||
|
||||
if(aLoadingNode || aLoadingPrincipal) {
|
||||
nsres = nsIIOService_NewLoadInfo(nsio, aLoadingPrincipal, aTriggeringPrincipal, aLoadingNode,
|
||||
aSecurityFlags, aContentPolicyType, &load_info);
|
||||
assert(nsres == NS_OK);
|
||||
}
|
||||
|
||||
nsres = new_channel_from_uri(aURI, load_info, _retval);
|
||||
if(load_info)
|
||||
nsISupports_Release(load_info);
|
||||
return nsres;
|
||||
}
|
||||
|
||||
static nsresult NSAPI nsIOService_NewChannelFromURIWithLoadInfo(nsIIOService *iface, nsIURI *aURI,
|
||||
nsILoadInfo *aLoadInfo, nsIChannel **_retval)
|
||||
{
|
||||
TRACE("(%p %p %p)\n", aURI, aLoadInfo, _retval);
|
||||
return new_channel_from_uri(aURI, aLoadInfo, _retval);
|
||||
}
|
||||
|
||||
static nsresult NSAPI nsIOService_NewChannelFromURI(nsIIOService *iface, nsIURI *aURI,
|
||||
nsIChannel **_retval)
|
||||
{
|
||||
TRACE("(%p %p)\n", aURI, _retval);
|
||||
return new_channel_from_uri(aURI, NULL, _retval);
|
||||
}
|
||||
|
||||
static nsresult NSAPI nsIOService_NewChannel2(nsIIOService *iface, const nsACString *aSpec,
|
||||
const char *aOriginCharset, nsIURI *aBaseURI, nsIDOMNode *aLoadingNode, nsIPrincipal *aLoadingPrincipal,
|
||||
nsIPrincipal *aTriggeringPrincipal, UINT32 aSecurityFlags, UINT32 aContentPolicyType, nsIChannel **_retval)
|
||||
{
|
||||
TRACE("(%s %s %p %p %p %p %x %d %p)\n", debugstr_nsacstr(aSpec), debugstr_a(aOriginCharset), aBaseURI,
|
||||
aLoadingNode, aLoadingPrincipal, aTriggeringPrincipal, aSecurityFlags, aContentPolicyType, _retval);
|
||||
return nsIIOService_NewChannel2(nsio, aSpec, aOriginCharset, aBaseURI, aLoadingNode, aLoadingPrincipal,
|
||||
aTriggeringPrincipal, aSecurityFlags, aContentPolicyType, _retval);
|
||||
}
|
||||
|
||||
static nsresult NSAPI nsIOService_NewChannel(nsIIOService *iface, const nsACString *aSpec,
|
||||
const char *aOriginCharset, nsIURI *aBaseURI, nsIChannel **_retval)
|
||||
{
|
||||
|
@ -3560,6 +3714,30 @@ static nsresult NSAPI nsIOService_SetOffline(nsIIOService *iface, cpp_bool aOffl
|
|||
return nsIIOService_SetOffline(nsio, aOffline);
|
||||
}
|
||||
|
||||
static nsresult NSAPI nsIOService_GetConnectivity(nsIIOService *iface, cpp_bool *aConnectivity)
|
||||
{
|
||||
TRACE("(%p)\n", aConnectivity);
|
||||
return nsIIOService_GetConnectivity(nsio, aConnectivity);
|
||||
}
|
||||
|
||||
static nsresult NSAPI nsIOService_SetAppOffline(nsIIOService *iface, UINT32 appId, INT32 state)
|
||||
{
|
||||
TRACE("(%d %x)\n", appId, state);
|
||||
return nsIIOService_SetAppOffline(nsio, appId, state);
|
||||
}
|
||||
|
||||
static nsresult NSAPI nsIOService_IsAppOffline(nsIIOService *iface, UINT32 appId, cpp_bool *_retval)
|
||||
{
|
||||
TRACE("(%u %p)\n", appId, _retval);
|
||||
return nsIIOService_IsAppOffline(nsio, appId, _retval);
|
||||
}
|
||||
|
||||
static nsresult NSAPI nsIOService_GetAppOfflineState(nsIIOService *iface, UINT32 appId, INT32 *_retval)
|
||||
{
|
||||
TRACE("(%d %p)\n", appId, _retval);
|
||||
return nsIIOService_GetAppOfflineState(nsio, appId, _retval);
|
||||
}
|
||||
|
||||
static nsresult NSAPI nsIOService_AllowPort(nsIIOService *iface, LONG aPort,
|
||||
const char *aScheme, cpp_bool *_retval)
|
||||
{
|
||||
|
@ -3582,10 +3760,17 @@ static const nsIIOServiceVtbl nsIOServiceVtbl = {
|
|||
nsIOService_GetProtocolFlags,
|
||||
nsIOService_NewURI,
|
||||
nsIOService_NewFileURI,
|
||||
nsIOService_NewChannelFromURI2,
|
||||
nsIOService_NewChannelFromURIWithLoadInfo,
|
||||
nsIOService_NewChannelFromURI,
|
||||
nsIOService_NewChannel2,
|
||||
nsIOService_NewChannel,
|
||||
nsIOService_GetOffline,
|
||||
nsIOService_SetOffline,
|
||||
nsIOService_GetConnectivity,
|
||||
nsIOService_SetAppOffline,
|
||||
nsIOService_IsAppOffline,
|
||||
nsIOService_GetAppOfflineState,
|
||||
nsIOService_AllowPort,
|
||||
nsIOService_ExtractScheme
|
||||
};
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
#include "mshtml_private.h"
|
||||
|
||||
#define NSCMD_COPY "cmd_copy"
|
||||
#define NSCMD_SELECTALL "cmd_selectAll"
|
||||
|
||||
void do_ns_command(HTMLDocument *This, const char *cmd, nsICommandParams *nsparam)
|
||||
{
|
||||
|
@ -336,8 +337,10 @@ static HRESULT exec_cut(HTMLDocument *This, DWORD nCmdexecopt, VARIANT *pvaIn, V
|
|||
|
||||
static HRESULT exec_copy(HTMLDocument *This, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
|
||||
{
|
||||
FIXME("(%p)->(%d %p %p)\n", This, nCmdexecopt, pvaIn, pvaOut);
|
||||
return E_NOTIMPL;
|
||||
TRACE("(%p)->(%d %s %p)\n", This, nCmdexecopt, debugstr_variant(pvaIn), pvaOut);
|
||||
|
||||
do_ns_command(This, NSCMD_COPY, NULL);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT exec_paste(HTMLDocument *This, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
|
||||
|
@ -364,10 +367,18 @@ static HRESULT exec_rendo(HTMLDocument *This, DWORD nCmdexecopt, VARIANT *pvaIn,
|
|||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT exec_select_all(HTMLDocument *This, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
|
||||
static HRESULT exec_select_all(HTMLDocument *This, DWORD nCmdexecopt, VARIANT *in, VARIANT *out)
|
||||
{
|
||||
FIXME("(%p)->(%d %p %p)\n", This, nCmdexecopt, pvaIn, pvaOut);
|
||||
return E_NOTIMPL;
|
||||
TRACE("(%p)\n", This);
|
||||
|
||||
if(in || out)
|
||||
FIXME("unsupported args\n");
|
||||
|
||||
if(This->doc_obj->nscontainer)
|
||||
do_ns_command(This, NSCMD_SELECTALL, NULL);
|
||||
|
||||
update_doc(This, UPDATE_UI);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT exec_clear_selection(HTMLDocument *This, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
|
||||
|
@ -620,6 +631,14 @@ static HRESULT exec_mshtml_paste(HTMLDocument *This, DWORD cmdexecopt, VARIANT *
|
|||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT query_selall_status(HTMLDocument *This, OLECMD *cmd)
|
||||
{
|
||||
TRACE("(%p)->(%p)\n", This, cmd);
|
||||
|
||||
cmd->cmdf = OLECMDF_SUPPORTED|OLECMDF_ENABLED;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT exec_browsemode(HTMLDocument *This, DWORD cmdexecopt, VARIANT *in, VARIANT *out)
|
||||
{
|
||||
WARN("(%p)->(%08x %p %p)\n", This, cmdexecopt, in, out);
|
||||
|
@ -738,6 +757,7 @@ static const cmdtable_t base_cmds[] = {
|
|||
{IDM_COPY, query_mshtml_copy, exec_mshtml_copy},
|
||||
{IDM_PASTE, query_mshtml_paste, exec_mshtml_paste},
|
||||
{IDM_CUT, query_mshtml_cut, exec_mshtml_cut},
|
||||
{IDM_SELECTALL, query_selall_status, exec_select_all},
|
||||
{IDM_BROWSEMODE, NULL, exec_browsemode},
|
||||
{IDM_EDITMODE, NULL, exec_editmode},
|
||||
{IDM_PRINT, query_enabled_stub, exec_print},
|
||||
|
|
|
@ -456,8 +456,11 @@ static HRESULT WINAPI HTMLPluginsCollection_get_length(IHTMLPluginsCollection *i
|
|||
static HRESULT WINAPI HTMLPluginsCollection_refresh(IHTMLPluginsCollection *iface, VARIANT_BOOL reload)
|
||||
{
|
||||
HTMLPluginsCollection *This = impl_from_IHTMLPluginsCollection(iface);
|
||||
FIXME("(%p)->(%x)\n", This, reload);
|
||||
return E_NOTIMPL;
|
||||
|
||||
TRACE("(%p)->(%x)\n", This, reload);
|
||||
|
||||
/* Nothing to do here. */
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static const IHTMLPluginsCollectionVtbl HTMLPluginsCollectionVtbl = {
|
||||
|
|
|
@ -103,8 +103,12 @@ void set_current_mon(HTMLOuterWindow *This, IMoniker *mon, DWORD flags)
|
|||
HRESULT hres;
|
||||
|
||||
if(This->mon) {
|
||||
if(This->doc_obj && !(flags & (BINDING_REPLACE|BINDING_REFRESH)))
|
||||
notify_travellog_update(This->doc_obj);
|
||||
if(This->doc_obj && !(flags & (BINDING_REPLACE|BINDING_REFRESH))) {
|
||||
if(This == This->doc_obj->basedoc.window)
|
||||
notify_travellog_update(This->doc_obj);
|
||||
else
|
||||
TRACE("Skipping travellog update for frame navigation.\n");
|
||||
}
|
||||
IMoniker_Release(This->mon);
|
||||
This->mon = NULL;
|
||||
}
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
|
||||
#include "mshtml_private.h"
|
||||
|
||||
const IID IID_HTMLPluginContainer =
|
||||
{0xbd7a6050,0xb373,0x4f6f,{0xa4,0x93,0xdd,0x40,0xc5,0x23,0xa8,0x6a}};
|
||||
|
||||
static BOOL check_load_safety(PluginHost *host)
|
||||
{
|
||||
DWORD policy_size, policy;
|
||||
|
|
|
@ -60,6 +60,8 @@ struct HTMLPluginContainer {
|
|||
DWORD props_len;
|
||||
};
|
||||
|
||||
DEFINE_GUID(IID_HTMLPluginContainer, 0xbd7a6050,0xb373,0x4f6f,0xa4,0x93,0xdd,0x40,0xc5,0x23,0xa8,0x6a);
|
||||
|
||||
extern const IID IID_HTMLPluginContainer DECLSPEC_HIDDEN;
|
||||
|
||||
HRESULT create_plugin_host(HTMLDocumentNode*,HTMLPluginContainer*) DECLSPEC_HIDDEN;
|
||||
|
@ -74,5 +76,5 @@ HRESULT create_ip_frame(IOleInPlaceFrame**) DECLSPEC_HIDDEN;
|
|||
HRESULT get_plugin_disp(HTMLPluginContainer*,IDispatch**) DECLSPEC_HIDDEN;
|
||||
HRESULT get_plugin_dispid(HTMLPluginContainer*,WCHAR*,DISPID*) DECLSPEC_HIDDEN;
|
||||
HRESULT invoke_plugin_prop(HTMLPluginContainer*,DISPID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*) DECLSPEC_HIDDEN;
|
||||
void notif_container_change(HTMLPluginContainer*,DISPID);
|
||||
void notif_container_change(HTMLPluginContainer*,DISPID) DECLSPEC_HIDDEN;
|
||||
void bind_activex_event(HTMLDocumentNode*,HTMLPluginContainer*,WCHAR*,IDispatch*) DECLSPEC_HIDDEN;
|
||||
|
|
|
@ -627,7 +627,7 @@ static HRESULT WINAPI ResProtocol_Start(IInternetProtocol *iface, LPCWSTR szUrl,
|
|||
*url_file++ = 0;
|
||||
}else {
|
||||
url_file = res_type;
|
||||
res_type = MAKEINTRESOURCEW(RT_HTML);
|
||||
res_type = (LPWSTR)RT_HTML;
|
||||
}
|
||||
|
||||
/* Ignore query and hash parts. */
|
||||
|
|
|
@ -1293,10 +1293,9 @@ IDispatch *get_script_disp(ScriptHost *script_host)
|
|||
return disp;
|
||||
}
|
||||
|
||||
static event_target_t **find_event_target(HTMLDocumentNode *doc, HTMLScriptElement *script_elem, HTMLDOMNode **ret_target_node)
|
||||
static EventTarget *find_event_target(HTMLDocumentNode *doc, HTMLScriptElement *script_elem)
|
||||
{
|
||||
HTMLDOMNode *target_node = NULL;
|
||||
event_target_t **target = NULL;
|
||||
EventTarget *event_target = NULL;
|
||||
const PRUnichar *target_id;
|
||||
nsAString target_id_str;
|
||||
nsresult nsres;
|
||||
|
@ -1314,24 +1313,24 @@ static event_target_t **find_event_target(HTMLDocumentNode *doc, HTMLScriptEleme
|
|||
if(!*target_id) {
|
||||
FIXME("Empty for attribute\n");
|
||||
}else if(!strcmpW(target_id, documentW)) {
|
||||
target = &doc->node.event_target;
|
||||
target_node = &doc->node;
|
||||
IHTMLDOMNode_AddRef(&target_node->IHTMLDOMNode_iface);
|
||||
event_target = &doc->node.event_target;
|
||||
htmldoc_addref(&doc->basedoc);
|
||||
}else if(!strcmpW(target_id, windowW)) {
|
||||
target = &doc->body_event_target;
|
||||
if(doc->window) {
|
||||
event_target = &doc->window->event_target;
|
||||
IDispatchEx_AddRef(&event_target->dispex.IDispatchEx_iface);
|
||||
}
|
||||
}else {
|
||||
HTMLElement *target_elem;
|
||||
|
||||
hres = get_doc_elem_by_id(doc, target_id, &target_elem);
|
||||
if(SUCCEEDED(hres) && target_elem) {
|
||||
target_node = &target_elem->node;
|
||||
target = &target_elem->node.event_target;
|
||||
event_target = &target_elem->node.event_target;
|
||||
}
|
||||
}
|
||||
nsAString_Finish(&target_id_str);
|
||||
|
||||
*ret_target_node = target_node;
|
||||
return target;
|
||||
nsAString_Finish(&target_id_str);
|
||||
return event_target;
|
||||
}
|
||||
|
||||
static BOOL parse_event_str(WCHAR *event, const WCHAR **args)
|
||||
|
@ -1426,9 +1425,8 @@ void bind_event_scripts(HTMLDocumentNode *doc)
|
|||
HTMLPluginContainer *plugin_container;
|
||||
nsIDOMHTMLScriptElement *nsscript;
|
||||
HTMLScriptElement *script_elem;
|
||||
event_target_t **event_target;
|
||||
EventTarget *event_target;
|
||||
nsIDOMNodeList *node_list;
|
||||
HTMLDOMNode *target_node;
|
||||
nsIDOMNode *script_node;
|
||||
nsAString selector_str;
|
||||
IDispatch *event_disp;
|
||||
|
@ -1475,21 +1473,18 @@ void bind_event_scripts(HTMLDocumentNode *doc)
|
|||
|
||||
event_disp = parse_event_elem(doc, script_elem, &event);
|
||||
if(event_disp) {
|
||||
event_target = find_event_target(doc, script_elem, &target_node);
|
||||
event_target = find_event_target(doc, script_elem);
|
||||
if(event_target) {
|
||||
if(target_node)
|
||||
hres = IHTMLDOMNode_QueryInterface(&target_node->IHTMLDOMNode_iface, &IID_HTMLPluginContainer,
|
||||
(void**)&plugin_container);
|
||||
else
|
||||
hres = E_NOINTERFACE;
|
||||
|
||||
hres = IDispatchEx_QueryInterface(&event_target->dispex.IDispatchEx_iface, &IID_HTMLPluginContainer,
|
||||
(void**)&plugin_container);
|
||||
if(SUCCEEDED(hres))
|
||||
bind_activex_event(doc, plugin_container, event, event_disp);
|
||||
else
|
||||
bind_node_event(doc, event_target, target_node, event, event_disp);
|
||||
bind_target_event(doc, event_target, event, event_disp);
|
||||
|
||||
if(target_node)
|
||||
IHTMLDOMNode_Release(&target_node->IHTMLDOMNode_iface);
|
||||
IDispatchEx_Release(&event_target->dispex.IDispatchEx_iface);
|
||||
if(plugin_container)
|
||||
node_release(&plugin_container->element.node);
|
||||
}
|
||||
|
||||
heap_free(event);
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
typedef struct {
|
||||
DispatchEx dispex;
|
||||
IHTMLSelectionObject IHTMLSelectionObject_iface;
|
||||
IHTMLSelectionObject2 IHTMLSelectionObject2_iface;
|
||||
|
||||
LONG ref;
|
||||
|
||||
|
@ -48,6 +49,8 @@ static HRESULT WINAPI HTMLSelectionObject_QueryInterface(IHTMLSelectionObject *i
|
|||
*ppv = &This->IHTMLSelectionObject_iface;
|
||||
}else if(IsEqualGUID(&IID_IHTMLSelectionObject, riid)) {
|
||||
*ppv = &This->IHTMLSelectionObject_iface;
|
||||
}else if(IsEqualGUID(&IID_IHTMLSelectionObject2, riid)) {
|
||||
*ppv = &This->IHTMLSelectionObject2_iface;
|
||||
}else if(dispex_query_interface(&This->dispex, riid, ppv)) {
|
||||
return *ppv ? S_OK : E_NOINTERFACE;
|
||||
}else {
|
||||
|
@ -221,13 +224,100 @@ static const IHTMLSelectionObjectVtbl HTMLSelectionObjectVtbl = {
|
|||
HTMLSelectionObject_get_type
|
||||
};
|
||||
|
||||
static inline HTMLSelectionObject *impl_from_IHTMLSelectionObject2(IHTMLSelectionObject2 *iface)
|
||||
{
|
||||
return CONTAINING_RECORD(iface, HTMLSelectionObject, IHTMLSelectionObject2_iface);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLSelectionObject2_QueryInterface(IHTMLSelectionObject2 *iface, REFIID riid, void **ppv)
|
||||
{
|
||||
HTMLSelectionObject *This = impl_from_IHTMLSelectionObject2(iface);
|
||||
|
||||
return IHTMLSelectionObject_QueryInterface(&This->IHTMLSelectionObject_iface, riid, ppv);
|
||||
}
|
||||
|
||||
static ULONG WINAPI HTMLSelectionObject2_AddRef(IHTMLSelectionObject2 *iface)
|
||||
{
|
||||
HTMLSelectionObject *This = impl_from_IHTMLSelectionObject2(iface);
|
||||
|
||||
return IHTMLSelectionObject_AddRef(&This->IHTMLSelectionObject_iface);
|
||||
}
|
||||
|
||||
static ULONG WINAPI HTMLSelectionObject2_Release(IHTMLSelectionObject2 *iface)
|
||||
{
|
||||
HTMLSelectionObject *This = impl_from_IHTMLSelectionObject2(iface);
|
||||
|
||||
return IHTMLSelectionObject_Release(&This->IHTMLSelectionObject_iface);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLSelectionObject2_GetTypeInfoCount(IHTMLSelectionObject2 *iface, UINT *pctinfo)
|
||||
{
|
||||
HTMLSelectionObject *This = impl_from_IHTMLSelectionObject2(iface);
|
||||
|
||||
return IDispatchEx_GetTypeInfoCount(&This->dispex.IDispatchEx_iface, pctinfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLSelectionObject2_GetTypeInfo(IHTMLSelectionObject2 *iface, UINT iTInfo,
|
||||
LCID lcid, ITypeInfo **ppTInfo)
|
||||
{
|
||||
HTMLSelectionObject *This = impl_from_IHTMLSelectionObject2(iface);
|
||||
|
||||
return IDispatchEx_GetTypeInfo(&This->dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLSelectionObject2_GetIDsOfNames(IHTMLSelectionObject2 *iface, REFIID riid,
|
||||
LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
|
||||
{
|
||||
HTMLSelectionObject *This = impl_from_IHTMLSelectionObject2(iface);
|
||||
|
||||
return IDispatchEx_GetIDsOfNames(&This->dispex.IDispatchEx_iface, riid, rgszNames,
|
||||
cNames, lcid, rgDispId);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLSelectionObject2_Invoke(IHTMLSelectionObject2 *iface, DISPID dispIdMember,
|
||||
REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult,
|
||||
EXCEPINFO *pExcepInfo, UINT *puArgErr)
|
||||
{
|
||||
HTMLSelectionObject *This = impl_from_IHTMLSelectionObject2(iface);
|
||||
|
||||
return IDispatchEx_Invoke(&This->dispex.IDispatchEx_iface, dispIdMember, riid,
|
||||
lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLSelectionObject2_createRangeCollection(IHTMLSelectionObject2 *iface, IDispatch **rangeCollection)
|
||||
{
|
||||
HTMLSelectionObject *This = impl_from_IHTMLSelectionObject2(iface);
|
||||
FIXME("(%p)->(%p)\n", This, rangeCollection);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLSelectionObject2_get_typeDetail(IHTMLSelectionObject2 *iface, BSTR *p)
|
||||
{
|
||||
HTMLSelectionObject *This = impl_from_IHTMLSelectionObject2(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static const IHTMLSelectionObject2Vtbl HTMLSelectionObject2Vtbl = {
|
||||
HTMLSelectionObject2_QueryInterface,
|
||||
HTMLSelectionObject2_AddRef,
|
||||
HTMLSelectionObject2_Release,
|
||||
HTMLSelectionObject2_GetTypeInfoCount,
|
||||
HTMLSelectionObject2_GetTypeInfo,
|
||||
HTMLSelectionObject2_GetIDsOfNames,
|
||||
HTMLSelectionObject2_Invoke,
|
||||
HTMLSelectionObject2_createRangeCollection,
|
||||
HTMLSelectionObject2_get_typeDetail
|
||||
};
|
||||
|
||||
static const tid_t HTMLSelectionObject_iface_tids[] = {
|
||||
IHTMLSelectionObject_tid,
|
||||
IHTMLSelectionObject2_tid,
|
||||
0
|
||||
};
|
||||
static dispex_static_data_t HTMLSelectionObject_dispex = {
|
||||
NULL,
|
||||
IHTMLSelectionObject_tid,
|
||||
IHTMLSelectionObject_tid, /* FIXME: We have a test for that, but it doesn't expose IHTMLSelectionObject2 iface. */
|
||||
NULL,
|
||||
HTMLSelectionObject_iface_tids
|
||||
};
|
||||
|
@ -243,6 +333,7 @@ HRESULT HTMLSelectionObject_Create(HTMLDocumentNode *doc, nsISelection *nsselect
|
|||
init_dispex(&selection->dispex, (IUnknown*)&selection->IHTMLSelectionObject_iface, &HTMLSelectionObject_dispex);
|
||||
|
||||
selection->IHTMLSelectionObject_iface.lpVtbl = &HTMLSelectionObjectVtbl;
|
||||
selection->IHTMLSelectionObject2_iface.lpVtbl = &HTMLSelectionObject2Vtbl;
|
||||
selection->ref = 1;
|
||||
selection->nsselection = nsselection; /* We shouldn't call AddRef here */
|
||||
|
||||
|
|
|
@ -181,12 +181,139 @@ static IOleUndoManager *create_undomgr(void)
|
|||
{
|
||||
UndoManager *ret = heap_alloc(sizeof(UndoManager));
|
||||
|
||||
if (!ret) return NULL;
|
||||
|
||||
ret->IOleUndoManager_iface.lpVtbl = &OleUndoManagerVtbl;
|
||||
ret->ref = 1;
|
||||
|
||||
return &ret->IOleUndoManager_iface;
|
||||
}
|
||||
|
||||
typedef struct {
|
||||
IHTMLEditServices IHTMLEditServices_iface;
|
||||
LONG ref;
|
||||
} editsvcs;
|
||||
|
||||
static inline editsvcs *impl_from_IHTMLEditServices(IHTMLEditServices *iface)
|
||||
{
|
||||
return CONTAINING_RECORD(iface, editsvcs, IHTMLEditServices_iface);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI editsvcs_QueryInterface(IHTMLEditServices *iface, REFIID riid, void **ppv)
|
||||
{
|
||||
editsvcs *This = impl_from_IHTMLEditServices(iface);
|
||||
|
||||
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
|
||||
|
||||
if(IsEqualGUID(riid, &IID_IUnknown)) {
|
||||
*ppv = &This->IHTMLEditServices_iface;
|
||||
} else if(IsEqualGUID(riid, &IID_IHTMLEditServices)) {
|
||||
*ppv = &This->IHTMLEditServices_iface;
|
||||
} else {
|
||||
*ppv = NULL;
|
||||
FIXME("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
|
||||
IUnknown_AddRef((IUnknown*)*ppv);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static ULONG WINAPI editsvcs_AddRef(IHTMLEditServices *iface)
|
||||
{
|
||||
editsvcs *This = impl_from_IHTMLEditServices(iface);
|
||||
LONG ref = InterlockedIncrement(&This->ref);
|
||||
|
||||
TRACE("(%p) ref=%d\n", This, ref);
|
||||
return ref;
|
||||
}
|
||||
|
||||
static ULONG WINAPI editsvcs_Release(IHTMLEditServices *iface)
|
||||
{
|
||||
editsvcs *This = impl_from_IHTMLEditServices(iface);
|
||||
LONG ref = InterlockedDecrement(&This->ref);
|
||||
|
||||
TRACE("(%p) ref=%d\n", This, ref);
|
||||
|
||||
if(!ref)
|
||||
heap_free(This);
|
||||
|
||||
return ref;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI editsvcs_AddDesigner(IHTMLEditServices *iface,
|
||||
IHTMLEditDesigner *pIDesigner)
|
||||
{
|
||||
editsvcs *This = impl_from_IHTMLEditServices(iface);
|
||||
FIXME("(%p)->(%p)\n", This, pIDesigner);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI editsvcs_RemoveDesigner(IHTMLEditServices *iface,
|
||||
IHTMLEditDesigner *pIDesigner)
|
||||
{
|
||||
editsvcs *This = impl_from_IHTMLEditServices(iface);
|
||||
FIXME("(%p)->(%p)\n", This, pIDesigner);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI editsvcs_GetSelectionServices(IHTMLEditServices *iface,
|
||||
IMarkupContainer *pIContainer, ISelectionServices **ppSelSvc)
|
||||
{
|
||||
editsvcs *This = impl_from_IHTMLEditServices(iface);
|
||||
FIXME("(%p)->(%p,%p)\n", This, pIContainer, ppSelSvc);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI editsvcs_MoveToSelectionAnchor(IHTMLEditServices *iface,
|
||||
IMarkupPointer *pIStartAnchor)
|
||||
{
|
||||
editsvcs *This = impl_from_IHTMLEditServices(iface);
|
||||
FIXME("(%p)->(%p)\n", This, pIStartAnchor);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI editsvcs_MoveToSelectionEnd(IHTMLEditServices *iface,
|
||||
IMarkupPointer *pIEndAnchor)
|
||||
{
|
||||
editsvcs *This = impl_from_IHTMLEditServices(iface);
|
||||
FIXME("(%p)->(%p)\n", This, pIEndAnchor);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI editsvcs_SelectRange(IHTMLEditServices *iface,
|
||||
IMarkupPointer *pStart, IMarkupPointer *pEnd, SELECTION_TYPE eType)
|
||||
{
|
||||
editsvcs *This = impl_from_IHTMLEditServices(iface);
|
||||
FIXME("(%p)->(%p,%p,%#x)\n", This, pStart, pEnd, eType);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static const IHTMLEditServicesVtbl editsvcsVtbl = {
|
||||
editsvcs_QueryInterface,
|
||||
editsvcs_AddRef,
|
||||
editsvcs_Release,
|
||||
editsvcs_AddDesigner,
|
||||
editsvcs_RemoveDesigner,
|
||||
editsvcs_GetSelectionServices,
|
||||
editsvcs_MoveToSelectionAnchor,
|
||||
editsvcs_MoveToSelectionEnd,
|
||||
editsvcs_SelectRange,
|
||||
};
|
||||
|
||||
static IHTMLEditServices *create_editsvcs(void)
|
||||
{
|
||||
editsvcs *ret = heap_alloc(sizeof(*ret));
|
||||
|
||||
if (ret) {
|
||||
ret->IHTMLEditServices_iface.lpVtbl = &editsvcsVtbl;
|
||||
ret->ref = 1;
|
||||
return &ret->IHTMLEditServices_iface;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/**********************************************************
|
||||
* IServiceProvider implementation
|
||||
*/
|
||||
|
@ -230,6 +357,9 @@ static HRESULT WINAPI ServiceProvider_QueryService(IServiceProvider *iface, REFG
|
|||
if(!This->doc_obj->undomgr)
|
||||
This->doc_obj->undomgr = create_undomgr();
|
||||
|
||||
if (!This->doc_obj->undomgr)
|
||||
return E_OUTOFMEMORY;
|
||||
|
||||
return IOleUndoManager_QueryInterface(This->doc_obj->undomgr, riid, ppv);
|
||||
}
|
||||
|
||||
|
@ -243,6 +373,18 @@ static HRESULT WINAPI ServiceProvider_QueryService(IServiceProvider *iface, REFG
|
|||
return IWindowForBindingUI_QueryInterface(&This->doc_obj->IWindowForBindingUI_iface, riid, ppv);
|
||||
}
|
||||
|
||||
if(IsEqualGUID(&SID_SHTMLEditServices, guidService)) {
|
||||
TRACE("SID_SHTMLEditServices\n");
|
||||
|
||||
if(!This->doc_obj->editsvcs)
|
||||
This->doc_obj->editsvcs = create_editsvcs();
|
||||
|
||||
if (!This->doc_obj->editsvcs)
|
||||
return E_OUTOFMEMORY;
|
||||
|
||||
return IHTMLEditServices_QueryInterface(This->doc_obj->editsvcs, riid, ppv);
|
||||
}
|
||||
|
||||
TRACE("(%p)->(%s %s %p)\n", This, debugstr_guid(guidService), debugstr_guid(riid), ppv);
|
||||
|
||||
if(This->doc_obj->client) {
|
||||
|
|
|
@ -1192,7 +1192,7 @@ static HRESULT WINAPI HTMLTxtRange_move(IHTMLTxtRange *iface, BSTR Unit,
|
|||
|
||||
if(!Count) {
|
||||
*ActualCount = 0;
|
||||
return IHTMLTxtRange_collapse(&This->IHTMLTxtRange_iface, TRUE);
|
||||
return IHTMLTxtRange_collapse(&This->IHTMLTxtRange_iface, VARIANT_TRUE);
|
||||
}
|
||||
|
||||
switch(unit) {
|
||||
|
@ -1204,7 +1204,7 @@ static HRESULT WINAPI HTMLTxtRange_move(IHTMLTxtRange *iface, BSTR Unit,
|
|||
*ActualCount = move_by_chars(&start, Count);
|
||||
|
||||
set_start_point(This, &start);
|
||||
IHTMLTxtRange_collapse(&This->IHTMLTxtRange_iface, TRUE);
|
||||
IHTMLTxtRange_collapse(&This->IHTMLTxtRange_iface, VARIANT_TRUE);
|
||||
free_rangepoint(&start);
|
||||
break;
|
||||
}
|
||||
|
@ -1217,7 +1217,7 @@ static HRESULT WINAPI HTMLTxtRange_move(IHTMLTxtRange *iface, BSTR Unit,
|
|||
*ActualCount = move_by_words(&start, Count);
|
||||
|
||||
set_start_point(This, &start);
|
||||
IHTMLTxtRange_collapse(&This->IHTMLTxtRange_iface, TRUE);
|
||||
IHTMLTxtRange_collapse(&This->IHTMLTxtRange_iface, VARIANT_TRUE);
|
||||
free_rangepoint(&start);
|
||||
break;
|
||||
}
|
||||
|
|
807
reactos/dll/win32/mshtml/xmlhttprequest.c
Normal file
807
reactos/dll/win32/mshtml/xmlhttprequest.c
Normal file
|
@ -0,0 +1,807 @@
|
|||
/*
|
||||
* Copyright 2015 Zhenbo Li
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#include "mshtml_private.h"
|
||||
|
||||
static HRESULT bstr_to_nsacstr(BSTR bstr, nsACString *str)
|
||||
{
|
||||
char *cstr = heap_strdupWtoU(bstr);
|
||||
if(!cstr)
|
||||
return E_OUTOFMEMORY;
|
||||
nsACString_Init(str, cstr);
|
||||
heap_free(cstr);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT variant_to_nsastr(VARIANT var, nsAString *ret)
|
||||
{
|
||||
switch(V_VT(&var)) {
|
||||
case VT_NULL:
|
||||
case VT_ERROR:
|
||||
case VT_EMPTY:
|
||||
nsAString_Init(ret, NULL);
|
||||
return S_OK;
|
||||
case VT_BSTR:
|
||||
nsAString_InitDepend(ret, V_BSTR(&var));
|
||||
return S_OK;
|
||||
default:
|
||||
FIXME("Unsupported VARIANT: %s\n", debugstr_variant(&var));
|
||||
return E_INVALIDARG;
|
||||
}
|
||||
}
|
||||
|
||||
static HRESULT return_nscstr(nsresult nsres, nsACString *nscstr, BSTR *p)
|
||||
{
|
||||
const char *str;
|
||||
int len;
|
||||
|
||||
if(NS_FAILED(nsres)) {
|
||||
ERR("failed: %08x\n", nsres);
|
||||
nsACString_Finish(nscstr);
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
nsACString_GetData(nscstr, &str);
|
||||
|
||||
if(*str) {
|
||||
len = MultiByteToWideChar(CP_UTF8, 0, str, -1, NULL, 0);
|
||||
*p = SysAllocStringLen(NULL, len);
|
||||
if(!*p) {
|
||||
nsACString_Finish(nscstr);
|
||||
return E_OUTOFMEMORY;
|
||||
}
|
||||
MultiByteToWideChar(CP_UTF8, 0, str, -1, *p, len);
|
||||
}else {
|
||||
*p = NULL;
|
||||
}
|
||||
|
||||
nsACString_Finish(nscstr);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
typedef struct XMLHttpReqEventListener XMLHttpReqEventListener;
|
||||
|
||||
typedef struct {
|
||||
EventTarget event_target;
|
||||
IHTMLXMLHttpRequest IHTMLXMLHttpRequest_iface;
|
||||
LONG ref;
|
||||
nsIXMLHttpRequest *nsxhr;
|
||||
XMLHttpReqEventListener *event_listener;
|
||||
} HTMLXMLHttpRequest;
|
||||
|
||||
struct XMLHttpReqEventListener {
|
||||
nsIDOMEventListener nsIDOMEventListener_iface;
|
||||
LONG ref;
|
||||
HTMLXMLHttpRequest *xhr;
|
||||
};
|
||||
|
||||
static void detach_xhr_event_listener(XMLHttpReqEventListener *event_listener)
|
||||
{
|
||||
nsIDOMEventTarget *event_target;
|
||||
nsAString str;
|
||||
nsresult nsres;
|
||||
|
||||
static const WCHAR readystatechangeW[] =
|
||||
{'o','n','r','e','a','d','y','s','t','a','t','e','c','h','a','n','g','e',0};
|
||||
|
||||
nsres = nsIXMLHttpRequest_QueryInterface(event_listener->xhr->nsxhr, &IID_nsIDOMEventTarget, (void**)&event_target);
|
||||
assert(nsres == NS_OK);
|
||||
|
||||
nsAString_InitDepend(&str, readystatechangeW);
|
||||
nsres = nsIDOMEventTarget_RemoveEventListener(event_target, &str, &event_listener->nsIDOMEventListener_iface, FALSE);
|
||||
nsAString_Finish(&str);
|
||||
nsIDOMEventTarget_Release(event_target);
|
||||
|
||||
event_listener->xhr->event_listener = NULL;
|
||||
event_listener->xhr = NULL;
|
||||
nsIDOMEventListener_Release(&event_listener->nsIDOMEventListener_iface);
|
||||
}
|
||||
|
||||
|
||||
static inline XMLHttpReqEventListener *impl_from_nsIDOMEventListener(nsIDOMEventListener *iface)
|
||||
{
|
||||
return CONTAINING_RECORD(iface, XMLHttpReqEventListener, nsIDOMEventListener_iface);
|
||||
}
|
||||
|
||||
static nsresult NSAPI XMLHttpReqEventListener_QueryInterface(nsIDOMEventListener *iface,
|
||||
nsIIDRef riid, void **result)
|
||||
{
|
||||
XMLHttpReqEventListener *This = impl_from_nsIDOMEventListener(iface);
|
||||
|
||||
if(IsEqualGUID(&IID_nsISupports, riid)) {
|
||||
TRACE("(%p)->(IID_nsISupports, %p)\n", This, result);
|
||||
*result = &This->nsIDOMEventListener_iface;
|
||||
}else if(IsEqualGUID(&IID_nsIDOMEventListener, riid)) {
|
||||
TRACE("(%p)->(IID_nsIDOMEventListener %p)\n", This, result);
|
||||
*result = &This->nsIDOMEventListener_iface;
|
||||
}else {
|
||||
*result = NULL;
|
||||
TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), result);
|
||||
return NS_NOINTERFACE;
|
||||
}
|
||||
|
||||
nsIDOMEventListener_AddRef(&This->nsIDOMEventListener_iface);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
static nsrefcnt NSAPI XMLHttpReqEventListener_AddRef(nsIDOMEventListener *iface)
|
||||
{
|
||||
XMLHttpReqEventListener *This = impl_from_nsIDOMEventListener(iface);
|
||||
LONG ref = InterlockedIncrement(&This->ref);
|
||||
|
||||
TRACE("(%p) ref=%d\n", This, ref);
|
||||
|
||||
return ref;
|
||||
}
|
||||
|
||||
static nsrefcnt NSAPI XMLHttpReqEventListener_Release(nsIDOMEventListener *iface)
|
||||
{
|
||||
XMLHttpReqEventListener *This = impl_from_nsIDOMEventListener(iface);
|
||||
LONG ref = InterlockedDecrement(&This->ref);
|
||||
|
||||
TRACE("(%p) ref=%d\n", This, ref);
|
||||
|
||||
if(!ref) {
|
||||
assert(!This->xhr);
|
||||
heap_free(This);
|
||||
}
|
||||
|
||||
return ref;
|
||||
}
|
||||
|
||||
static nsresult NSAPI XMLHttpReqEventListener_HandleEvent(nsIDOMEventListener *iface, nsIDOMEvent *event)
|
||||
{
|
||||
XMLHttpReqEventListener *This = impl_from_nsIDOMEventListener(iface);
|
||||
|
||||
TRACE("(%p)\n", This);
|
||||
|
||||
if(!This->xhr)
|
||||
return NS_OK;
|
||||
|
||||
call_event_handlers(NULL, NULL, &This->xhr->event_target, NULL, EVENTID_READYSTATECHANGE,
|
||||
(IDispatch*)&This->xhr->IHTMLXMLHttpRequest_iface);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
static const nsIDOMEventListenerVtbl XMLHttpReqEventListenerVtbl = {
|
||||
XMLHttpReqEventListener_QueryInterface,
|
||||
XMLHttpReqEventListener_AddRef,
|
||||
XMLHttpReqEventListener_Release,
|
||||
XMLHttpReqEventListener_HandleEvent
|
||||
};
|
||||
|
||||
static inline HTMLXMLHttpRequest *impl_from_IHTMLXMLHttpRequest(IHTMLXMLHttpRequest *iface)
|
||||
{
|
||||
return CONTAINING_RECORD(iface, HTMLXMLHttpRequest, IHTMLXMLHttpRequest_iface);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLXMLHttpRequest_QueryInterface(IHTMLXMLHttpRequest *iface, REFIID riid, void **ppv)
|
||||
{
|
||||
HTMLXMLHttpRequest *This = impl_from_IHTMLXMLHttpRequest(iface);
|
||||
|
||||
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
|
||||
|
||||
if(IsEqualGUID(&IID_IUnknown, riid)) {
|
||||
*ppv = &This->IHTMLXMLHttpRequest_iface;
|
||||
}else if(IsEqualGUID(&IID_IDispatch, riid)) {
|
||||
*ppv = &This->IHTMLXMLHttpRequest_iface;
|
||||
}else if(IsEqualGUID(&IID_IHTMLXMLHttpRequest, riid)) {
|
||||
*ppv = &This->IHTMLXMLHttpRequest_iface;
|
||||
}else if(dispex_query_interface(&This->event_target.dispex, riid, ppv)) {
|
||||
return *ppv ? S_OK : E_NOINTERFACE;
|
||||
}else {
|
||||
*ppv = NULL;
|
||||
WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
|
||||
IUnknown_AddRef((IUnknown*)*ppv);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static ULONG WINAPI HTMLXMLHttpRequest_AddRef(IHTMLXMLHttpRequest *iface)
|
||||
{
|
||||
HTMLXMLHttpRequest *This = impl_from_IHTMLXMLHttpRequest(iface);
|
||||
LONG ref = InterlockedIncrement(&This->ref);
|
||||
|
||||
TRACE("(%p) ref=%d\n", This, ref);
|
||||
|
||||
return ref;
|
||||
}
|
||||
|
||||
static ULONG WINAPI HTMLXMLHttpRequest_Release(IHTMLXMLHttpRequest *iface)
|
||||
{
|
||||
HTMLXMLHttpRequest *This = impl_from_IHTMLXMLHttpRequest(iface);
|
||||
LONG ref = InterlockedDecrement(&This->ref);
|
||||
|
||||
TRACE("(%p) ref=%d\n", This, ref);
|
||||
|
||||
if(!ref) {
|
||||
if(This->event_listener)
|
||||
detach_xhr_event_listener(This->event_listener);
|
||||
release_dispex(&This->event_target.dispex);
|
||||
nsIXMLHttpRequest_Release(This->nsxhr);
|
||||
heap_free(This);
|
||||
}
|
||||
|
||||
return ref;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLXMLHttpRequest_GetTypeInfoCount(IHTMLXMLHttpRequest *iface, UINT *pctinfo)
|
||||
{
|
||||
HTMLXMLHttpRequest *This = impl_from_IHTMLXMLHttpRequest(iface);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->event_target.dispex.IDispatchEx_iface, pctinfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLXMLHttpRequest_GetTypeInfo(IHTMLXMLHttpRequest *iface, UINT iTInfo,
|
||||
LCID lcid, ITypeInfo **ppTInfo)
|
||||
{
|
||||
HTMLXMLHttpRequest *This = impl_from_IHTMLXMLHttpRequest(iface);
|
||||
|
||||
return IDispatchEx_GetTypeInfo(&This->event_target.dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLXMLHttpRequest_GetIDsOfNames(IHTMLXMLHttpRequest *iface, REFIID riid, LPOLESTR *rgszNames, UINT cNames,
|
||||
LCID lcid, DISPID *rgDispId)
|
||||
{
|
||||
HTMLXMLHttpRequest *This = impl_from_IHTMLXMLHttpRequest(iface);
|
||||
|
||||
return IDispatchEx_GetIDsOfNames(&This->event_target.dispex.IDispatchEx_iface, riid, rgszNames, cNames,
|
||||
lcid, rgDispId);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLXMLHttpRequest_Invoke(IHTMLXMLHttpRequest *iface, DISPID dispIdMember, REFIID riid, LCID lcid,
|
||||
WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
|
||||
{
|
||||
HTMLXMLHttpRequest *This = impl_from_IHTMLXMLHttpRequest(iface);
|
||||
|
||||
return IDispatchEx_Invoke(&This->event_target.dispex.IDispatchEx_iface, dispIdMember, riid, lcid, wFlags,
|
||||
pDispParams, pVarResult, pExcepInfo, puArgErr);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLXMLHttpRequest_get_readyState(IHTMLXMLHttpRequest *iface, LONG *p)
|
||||
{
|
||||
HTMLXMLHttpRequest *This = impl_from_IHTMLXMLHttpRequest(iface);
|
||||
UINT16 val;
|
||||
nsresult nsres;
|
||||
|
||||
TRACE("(%p)->(%p)\n", This, p);
|
||||
|
||||
if(!p)
|
||||
return E_POINTER;
|
||||
nsres = nsIXMLHttpRequest_GetReadyState(This->nsxhr, &val);
|
||||
if(NS_FAILED(nsres)) {
|
||||
ERR("nsIXMLHttpRequest_GetReadyState failed: %08x\n", nsres);
|
||||
return E_FAIL;
|
||||
}
|
||||
*p = val;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLXMLHttpRequest_get_responseBody(IHTMLXMLHttpRequest *iface, VARIANT *p)
|
||||
{
|
||||
HTMLXMLHttpRequest *This = impl_from_IHTMLXMLHttpRequest(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLXMLHttpRequest_get_responseText(IHTMLXMLHttpRequest *iface, BSTR *p)
|
||||
{
|
||||
HTMLXMLHttpRequest *This = impl_from_IHTMLXMLHttpRequest(iface);
|
||||
nsAString nsstr;
|
||||
nsresult nsres;
|
||||
|
||||
TRACE("(%p)->(%p)\n", This, p);
|
||||
|
||||
if(!p)
|
||||
return E_POINTER;
|
||||
|
||||
nsAString_Init(&nsstr, NULL);
|
||||
nsres = nsIXMLHttpRequest_GetResponseText(This->nsxhr, &nsstr);
|
||||
return return_nsstr(nsres, &nsstr, p);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLXMLHttpRequest_get_responseXML(IHTMLXMLHttpRequest *iface, IDispatch **p)
|
||||
{
|
||||
HTMLXMLHttpRequest *This = impl_from_IHTMLXMLHttpRequest(iface);
|
||||
FIXME("(%p)->(%p)\n", This, p);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLXMLHttpRequest_get_status(IHTMLXMLHttpRequest *iface, LONG *p)
|
||||
{
|
||||
HTMLXMLHttpRequest *This = impl_from_IHTMLXMLHttpRequest(iface);
|
||||
DWORD val;
|
||||
nsresult nsres;
|
||||
TRACE("(%p)->(%p)\n", This, p);
|
||||
|
||||
if(!p)
|
||||
return E_POINTER;
|
||||
|
||||
nsres = nsIXMLHttpRequest_GetStatus(This->nsxhr, &val);
|
||||
if(NS_FAILED(nsres)) {
|
||||
ERR("nsIXMLHttpRequest_GetStatus failed: %08x\n", nsres);
|
||||
return E_FAIL;
|
||||
}
|
||||
*p = val;
|
||||
if(val == 0)
|
||||
return E_FAIL; /* WinAPI thinks this is an error */
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLXMLHttpRequest_get_statusText(IHTMLXMLHttpRequest *iface, BSTR *p)
|
||||
{
|
||||
HTMLXMLHttpRequest *This = impl_from_IHTMLXMLHttpRequest(iface);
|
||||
nsACString nscstr;
|
||||
nsresult nsres;
|
||||
HRESULT hres;
|
||||
LONG state;
|
||||
|
||||
TRACE("(%p)->(%p)\n", This, p);
|
||||
|
||||
if(!p)
|
||||
return E_POINTER;
|
||||
|
||||
hres = IHTMLXMLHttpRequest_get_readyState(iface, &state);
|
||||
if(FAILED(hres))
|
||||
return hres;
|
||||
|
||||
if(state < 2) {
|
||||
*p = NULL;
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
nsACString_Init(&nscstr, NULL);
|
||||
nsres = nsIXMLHttpRequest_GetStatusText(This->nsxhr, &nscstr);
|
||||
return return_nscstr(nsres, &nscstr, p);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLXMLHttpRequest_put_onreadystatechange(IHTMLXMLHttpRequest *iface, VARIANT v)
|
||||
{
|
||||
HTMLXMLHttpRequest *This = impl_from_IHTMLXMLHttpRequest(iface);
|
||||
|
||||
TRACE("(%p)->(%s)\n", This, debugstr_variant(&v));
|
||||
|
||||
return set_event_handler(&This->event_target, EVENTID_READYSTATECHANGE, &v);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLXMLHttpRequest_get_onreadystatechange(IHTMLXMLHttpRequest *iface, VARIANT *p)
|
||||
{
|
||||
HTMLXMLHttpRequest *This = impl_from_IHTMLXMLHttpRequest(iface);
|
||||
|
||||
TRACE("(%p)->(%p)\n", This, p);
|
||||
|
||||
return get_event_handler(&This->event_target, EVENTID_READYSTATECHANGE, p);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLXMLHttpRequest_abort(IHTMLXMLHttpRequest *iface)
|
||||
{
|
||||
HTMLXMLHttpRequest *This = impl_from_IHTMLXMLHttpRequest(iface);
|
||||
nsresult nsres;
|
||||
|
||||
TRACE("(%p)->()\n", This);
|
||||
|
||||
nsres = nsIXMLHttpRequest_SlowAbort(This->nsxhr);
|
||||
if(NS_FAILED(nsres)) {
|
||||
ERR("nsIXMLHttpRequest_SlowAbort failed: %08x\n", nsres);
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLXMLHttpRequest_open(IHTMLXMLHttpRequest *iface, BSTR bstrMethod, BSTR bstrUrl, VARIANT varAsync, VARIANT varUser, VARIANT varPassword)
|
||||
{
|
||||
HTMLXMLHttpRequest *This = impl_from_IHTMLXMLHttpRequest(iface);
|
||||
nsACString method, url;
|
||||
nsAString user, password;
|
||||
nsresult nsres;
|
||||
HRESULT hres;
|
||||
|
||||
TRACE("(%p)->(%s %s %s %s %s)\n", This, debugstr_w(bstrMethod), debugstr_w(bstrUrl), debugstr_variant(&varAsync), debugstr_variant(&varUser), debugstr_variant(&varPassword));
|
||||
|
||||
if(V_VT(&varAsync) != VT_BOOL) {
|
||||
FIXME("varAsync not supported: %s\n", debugstr_variant(&varAsync));
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
/* Note: Starting with Gecko 30.0 (Firefox 30.0 / Thunderbird 30.0 / SeaMonkey 2.27),
|
||||
* synchronous requests on the main thread have been deprecated due to the negative
|
||||
* effects to the user experience.
|
||||
*/
|
||||
if(!V_BOOL(&varAsync)) {
|
||||
FIXME("Synchronous request is not supported yet\n");
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
hres = variant_to_nsastr(varUser, &user);
|
||||
if(FAILED(hres))
|
||||
return hres;
|
||||
hres = variant_to_nsastr(varPassword, &password);
|
||||
if(FAILED(hres)) {
|
||||
nsAString_Finish(&user);
|
||||
return hres;
|
||||
}
|
||||
|
||||
hres = bstr_to_nsacstr(bstrMethod, &method);
|
||||
if(FAILED(hres)) {
|
||||
nsAString_Finish(&user);
|
||||
nsAString_Finish(&password);
|
||||
return hres;
|
||||
}
|
||||
hres = bstr_to_nsacstr(bstrUrl, &url);
|
||||
if(FAILED(hres)) {
|
||||
nsAString_Finish(&user);
|
||||
nsAString_Finish(&password);
|
||||
nsACString_Finish(&method);
|
||||
return hres;
|
||||
}
|
||||
|
||||
nsres = nsIXMLHttpRequest_Open(This->nsxhr, &method, &url, TRUE,
|
||||
&user, &password, 0);
|
||||
|
||||
nsACString_Finish(&method);
|
||||
nsACString_Finish(&url);
|
||||
nsAString_Finish(&user);
|
||||
nsAString_Finish(&password);
|
||||
|
||||
if(NS_FAILED(nsres)) {
|
||||
ERR("nsIXMLHttpRequest_Open failed: %08x\n", nsres);
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLXMLHttpRequest_send(IHTMLXMLHttpRequest *iface, VARIANT varBody)
|
||||
{
|
||||
HTMLXMLHttpRequest *This = impl_from_IHTMLXMLHttpRequest(iface);
|
||||
nsresult nsres;
|
||||
|
||||
TRACE("(%p)->(%s)\n", This, debugstr_variant(&varBody));
|
||||
|
||||
switch(V_VT(&varBody)) {
|
||||
case VT_NULL:
|
||||
case VT_EMPTY:
|
||||
case VT_ERROR:
|
||||
break;
|
||||
default:
|
||||
FIXME("varBody(%s) unsupported\n", debugstr_variant(&varBody));
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
nsres = nsIXMLHttpRequest_Send(This->nsxhr, NULL);
|
||||
|
||||
if(NS_FAILED(nsres)) {
|
||||
ERR("nsIXMLHttpRequest_Send failed: %08x\n", nsres);
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLXMLHttpRequest_getAllResponseHeaders(IHTMLXMLHttpRequest *iface, BSTR *p)
|
||||
{
|
||||
HTMLXMLHttpRequest *This = impl_from_IHTMLXMLHttpRequest(iface);
|
||||
nsACString nscstr;
|
||||
nsresult nsres;
|
||||
HRESULT hres;
|
||||
LONG state;
|
||||
|
||||
TRACE("(%p)->(%p)\n", This, p);
|
||||
|
||||
if(!p)
|
||||
return E_POINTER;
|
||||
|
||||
hres = IHTMLXMLHttpRequest_get_readyState(iface, &state);
|
||||
if(FAILED(hres))
|
||||
return hres;
|
||||
|
||||
if(state < 2) {
|
||||
*p = NULL;
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
nsACString_Init(&nscstr, NULL);
|
||||
nsres = nsIXMLHttpRequest_GetAllResponseHeaders(This->nsxhr, &nscstr);
|
||||
return return_nscstr(nsres, &nscstr, p);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLXMLHttpRequest_getResponseHeader(IHTMLXMLHttpRequest *iface, BSTR bstrHeader, BSTR *p)
|
||||
{
|
||||
HTMLXMLHttpRequest *This = impl_from_IHTMLXMLHttpRequest(iface);
|
||||
nsACString header, ret;
|
||||
char *cstr;
|
||||
nsresult nsres;
|
||||
HRESULT hres;
|
||||
LONG state;
|
||||
TRACE("(%p)->(%s %p)\n", This, debugstr_w(bstrHeader), p);
|
||||
|
||||
if(!p)
|
||||
return E_POINTER;
|
||||
if(!bstrHeader)
|
||||
return E_INVALIDARG;
|
||||
|
||||
hres = IHTMLXMLHttpRequest_get_readyState(iface, &state);
|
||||
if(FAILED(hres))
|
||||
return hres;
|
||||
|
||||
if(state < 2) {
|
||||
*p = NULL;
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
cstr = heap_strdupWtoU(bstrHeader);
|
||||
nsACString_InitDepend(&header, cstr);
|
||||
nsACString_Init(&ret, NULL);
|
||||
|
||||
nsres = nsIXMLHttpRequest_GetResponseHeader(This->nsxhr, &header, &ret);
|
||||
|
||||
nsACString_Finish(&header);
|
||||
heap_free(cstr);
|
||||
return return_nscstr(nsres, &ret, p);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLXMLHttpRequest_setRequestHeader(IHTMLXMLHttpRequest *iface, BSTR bstrHeader, BSTR bstrValue)
|
||||
{
|
||||
HTMLXMLHttpRequest *This = impl_from_IHTMLXMLHttpRequest(iface);
|
||||
FIXME("(%p)->(%s %s)\n", This, debugstr_w(bstrHeader), debugstr_w(bstrValue));
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static const IHTMLXMLHttpRequestVtbl HTMLXMLHttpRequestVtbl = {
|
||||
HTMLXMLHttpRequest_QueryInterface,
|
||||
HTMLXMLHttpRequest_AddRef,
|
||||
HTMLXMLHttpRequest_Release,
|
||||
HTMLXMLHttpRequest_GetTypeInfoCount,
|
||||
HTMLXMLHttpRequest_GetTypeInfo,
|
||||
HTMLXMLHttpRequest_GetIDsOfNames,
|
||||
HTMLXMLHttpRequest_Invoke,
|
||||
HTMLXMLHttpRequest_get_readyState,
|
||||
HTMLXMLHttpRequest_get_responseBody,
|
||||
HTMLXMLHttpRequest_get_responseText,
|
||||
HTMLXMLHttpRequest_get_responseXML,
|
||||
HTMLXMLHttpRequest_get_status,
|
||||
HTMLXMLHttpRequest_get_statusText,
|
||||
HTMLXMLHttpRequest_put_onreadystatechange,
|
||||
HTMLXMLHttpRequest_get_onreadystatechange,
|
||||
HTMLXMLHttpRequest_abort,
|
||||
HTMLXMLHttpRequest_open,
|
||||
HTMLXMLHttpRequest_send,
|
||||
HTMLXMLHttpRequest_getAllResponseHeaders,
|
||||
HTMLXMLHttpRequest_getResponseHeader,
|
||||
HTMLXMLHttpRequest_setRequestHeader
|
||||
};
|
||||
|
||||
static inline HTMLXMLHttpRequest *impl_from_DispatchEx(DispatchEx *iface)
|
||||
{
|
||||
return CONTAINING_RECORD(iface, HTMLXMLHttpRequest, event_target.dispex);
|
||||
}
|
||||
|
||||
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 dispex_static_data_vtbl_t HTMLXMLHttpRequest_dispex_vtbl = {
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
HTMLXMLHttpRequest_bind_event
|
||||
};
|
||||
|
||||
static const tid_t HTMLXMLHttpRequest_iface_tids[] = {
|
||||
IHTMLXMLHttpRequest_tid,
|
||||
0
|
||||
};
|
||||
static dispex_static_data_t HTMLXMLHttpRequest_dispex = {
|
||||
&HTMLXMLHttpRequest_dispex_vtbl,
|
||||
DispHTMLXMLHttpRequest_tid,
|
||||
NULL,
|
||||
HTMLXMLHttpRequest_iface_tids
|
||||
};
|
||||
|
||||
|
||||
/* IHTMLXMLHttpRequestFactory */
|
||||
static inline HTMLXMLHttpRequestFactory *impl_from_IHTMLXMLHttpRequestFactory(IHTMLXMLHttpRequestFactory *iface)
|
||||
{
|
||||
return CONTAINING_RECORD(iface, HTMLXMLHttpRequestFactory, IHTMLXMLHttpRequestFactory_iface);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLXMLHttpRequestFactory_QueryInterface(IHTMLXMLHttpRequestFactory *iface, REFIID riid, void **ppv)
|
||||
{
|
||||
HTMLXMLHttpRequestFactory *This = impl_from_IHTMLXMLHttpRequestFactory(iface);
|
||||
|
||||
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
|
||||
|
||||
if(IsEqualGUID(&IID_IUnknown, riid)) {
|
||||
*ppv = &This->IHTMLXMLHttpRequestFactory_iface;
|
||||
}else if(IsEqualGUID(&IID_IDispatch, riid)) {
|
||||
*ppv = &This->IHTMLXMLHttpRequestFactory_iface;
|
||||
}else if(IsEqualGUID(&IID_IHTMLXMLHttpRequestFactory, riid)) {
|
||||
*ppv = &This->IHTMLXMLHttpRequestFactory_iface;
|
||||
}else if(dispex_query_interface(&This->dispex, riid, ppv)) {
|
||||
return *ppv ? S_OK : E_NOINTERFACE;
|
||||
}else {
|
||||
*ppv = NULL;
|
||||
WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
|
||||
IUnknown_AddRef((IUnknown*)*ppv);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static ULONG WINAPI HTMLXMLHttpRequestFactory_AddRef(IHTMLXMLHttpRequestFactory *iface)
|
||||
{
|
||||
HTMLXMLHttpRequestFactory *This = impl_from_IHTMLXMLHttpRequestFactory(iface);
|
||||
LONG ref = InterlockedIncrement(&This->ref);
|
||||
|
||||
TRACE("(%p) ref=%d\n", This, ref);
|
||||
|
||||
return ref;
|
||||
}
|
||||
|
||||
static ULONG WINAPI HTMLXMLHttpRequestFactory_Release(IHTMLXMLHttpRequestFactory *iface)
|
||||
{
|
||||
HTMLXMLHttpRequestFactory *This = impl_from_IHTMLXMLHttpRequestFactory(iface);
|
||||
LONG ref = InterlockedDecrement(&This->ref);
|
||||
|
||||
TRACE("(%p) ref=%d\n", This, ref);
|
||||
|
||||
if(!ref) {
|
||||
release_dispex(&This->dispex);
|
||||
heap_free(This);
|
||||
}
|
||||
|
||||
return ref;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLXMLHttpRequestFactory_GetTypeInfoCount(IHTMLXMLHttpRequestFactory *iface, UINT *pctinfo)
|
||||
{
|
||||
HTMLXMLHttpRequestFactory *This = impl_from_IHTMLXMLHttpRequestFactory(iface);
|
||||
return IDispatchEx_GetTypeInfoCount(&This->dispex.IDispatchEx_iface, pctinfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLXMLHttpRequestFactory_GetTypeInfo(IHTMLXMLHttpRequestFactory *iface, UINT iTInfo,
|
||||
LCID lcid, ITypeInfo **ppTInfo)
|
||||
{
|
||||
HTMLXMLHttpRequestFactory *This = impl_from_IHTMLXMLHttpRequestFactory(iface);
|
||||
|
||||
return IDispatchEx_GetTypeInfo(&This->dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLXMLHttpRequestFactory_GetIDsOfNames(IHTMLXMLHttpRequestFactory *iface, REFIID riid, LPOLESTR *rgszNames, UINT cNames,
|
||||
LCID lcid, DISPID *rgDispId)
|
||||
{
|
||||
HTMLXMLHttpRequestFactory *This = impl_from_IHTMLXMLHttpRequestFactory(iface);
|
||||
|
||||
return IDispatchEx_GetIDsOfNames(&This->dispex.IDispatchEx_iface, riid, rgszNames, cNames,
|
||||
lcid, rgDispId);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLXMLHttpRequestFactory_Invoke(IHTMLXMLHttpRequestFactory *iface, DISPID dispIdMember, REFIID riid, LCID lcid,
|
||||
WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
|
||||
{
|
||||
HTMLXMLHttpRequestFactory *This = impl_from_IHTMLXMLHttpRequestFactory(iface);
|
||||
|
||||
return IDispatchEx_Invoke(&This->dispex.IDispatchEx_iface, dispIdMember, riid, lcid, wFlags,
|
||||
pDispParams, pVarResult, pExcepInfo, puArgErr);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI HTMLXMLHttpRequestFactory_create(IHTMLXMLHttpRequestFactory *iface, IHTMLXMLHttpRequest **p)
|
||||
{
|
||||
HTMLXMLHttpRequestFactory *This = impl_from_IHTMLXMLHttpRequestFactory(iface);
|
||||
HTMLXMLHttpRequest *ret;
|
||||
nsIXMLHttpRequest *nsxhr;
|
||||
|
||||
TRACE("(%p)->(%p)\n", This, p);
|
||||
|
||||
nsxhr = create_nsxhr(This->window->base.outer_window->nswindow);
|
||||
if(!nsxhr)
|
||||
return E_FAIL;
|
||||
|
||||
ret = heap_alloc_zero(sizeof(*ret));
|
||||
if(!ret) {
|
||||
nsIXMLHttpRequest_Release(nsxhr);
|
||||
return E_OUTOFMEMORY;
|
||||
}
|
||||
ret->nsxhr = nsxhr;
|
||||
|
||||
ret->IHTMLXMLHttpRequest_iface.lpVtbl = &HTMLXMLHttpRequestVtbl;
|
||||
init_dispex(&ret->event_target.dispex, (IUnknown*)&ret->IHTMLXMLHttpRequest_iface,
|
||||
&HTMLXMLHttpRequest_dispex);
|
||||
ret->ref = 1;
|
||||
|
||||
*p = &ret->IHTMLXMLHttpRequest_iface;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static const IHTMLXMLHttpRequestFactoryVtbl HTMLXMLHttpRequestFactoryVtbl = {
|
||||
HTMLXMLHttpRequestFactory_QueryInterface,
|
||||
HTMLXMLHttpRequestFactory_AddRef,
|
||||
HTMLXMLHttpRequestFactory_Release,
|
||||
HTMLXMLHttpRequestFactory_GetTypeInfoCount,
|
||||
HTMLXMLHttpRequestFactory_GetTypeInfo,
|
||||
HTMLXMLHttpRequestFactory_GetIDsOfNames,
|
||||
HTMLXMLHttpRequestFactory_Invoke,
|
||||
HTMLXMLHttpRequestFactory_create
|
||||
};
|
||||
|
||||
static const tid_t HTMLXMLHttpRequestFactory_iface_tids[] = {
|
||||
IHTMLXMLHttpRequestFactory_tid,
|
||||
0
|
||||
};
|
||||
static dispex_static_data_t HTMLXMLHttpRequestFactory_dispex = {
|
||||
NULL,
|
||||
IHTMLXMLHttpRequestFactory_tid,
|
||||
NULL,
|
||||
HTMLXMLHttpRequestFactory_iface_tids
|
||||
};
|
||||
|
||||
HRESULT HTMLXMLHttpRequestFactory_Create(HTMLInnerWindow* window, HTMLXMLHttpRequestFactory **ret_ptr)
|
||||
{
|
||||
HTMLXMLHttpRequestFactory *ret;
|
||||
|
||||
ret = heap_alloc(sizeof(*ret));
|
||||
if(!ret)
|
||||
return E_OUTOFMEMORY;
|
||||
|
||||
ret->IHTMLXMLHttpRequestFactory_iface.lpVtbl = &HTMLXMLHttpRequestFactoryVtbl;
|
||||
ret->ref = 1;
|
||||
ret->window = window;
|
||||
|
||||
init_dispex(&ret->dispex, (IUnknown*)&ret->IHTMLXMLHttpRequestFactory_iface,
|
||||
&HTMLXMLHttpRequestFactory_dispex);
|
||||
|
||||
*ret_ptr = ret;
|
||||
return S_OK;
|
||||
}
|
|
@ -113,7 +113,7 @@ reactos/dll/win32/msctf # Synced to WineStaging-1.7.55
|
|||
reactos/dll/win32/msftedit # Synced to WineStaging-1.7.55
|
||||
reactos/dll/win32/msg711.acm # Synced to WineStaging-1.7.55
|
||||
reactos/dll/win32/msgsm32.acm # Synced to WineStaging-1.7.55
|
||||
reactos/dll/win32/mshtml # Synced to WineStaging-1.7.37
|
||||
reactos/dll/win32/mshtml # Synced to WineStaging-1.7.55
|
||||
reactos/dll/win32/mshtml.tlb # Synced to WineStaging-1.7.47
|
||||
reactos/dll/win32/msi # Synced to WineStaging-1.7.55
|
||||
reactos/dll/win32/msimg32 # Synced to WineStaging-1.7.55
|
||||
|
|
Loading…
Reference in a new issue