sync mshtml to wine 1.1.39

svn path=/trunk/; revision=45754
This commit is contained in:
Christoph von Wittich 2010-03-02 14:08:15 +00:00
parent d64433b26d
commit 715db25ce6
51 changed files with 1432 additions and 439 deletions

View file

@ -72,4 +72,4 @@ FONT 8, "MS Shell Dlg"
PUSHBUTTON "OK", IDOK, 40, 65, 45, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Abbrechen", IDCANCEL, 115, 65, 45, 15, WS_GROUP | WS_TABSTOP
}
#pragma code_page(default)

View file

@ -72,3 +72,4 @@ FONT 8, "MS Shell Dlg"
PUSHBUTTON "OK", IDOK, 40, 65, 45, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Annuler", IDCANCEL, 115, 65, 45, 15, WS_GROUP | WS_TABSTOP
}
#pragma code_page(default)

View file

@ -0,0 +1,72 @@
/*
* Copyright 2010 Luca Bennati
*
* 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 "resource.h"
/*UTF-8*/
#pragma code_page(65001)
LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL
STRINGTABLE DISCARDABLE
{
IDS_HTMLDISABLED "Il rendering HTML è correntemente disattivato."
IDS_HTMLDOCUMENT "Documento HTML"
IDS_DOWNLOADING "Scaricando..."
IDS_INSTALLING "Installando..."
}
ID_DWL_DIALOG DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 260, 95
STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Installer di Wine Gecko"
FONT 8, "MS Shell Dlg"
{
LTEXT "Wine non ha trovato un pacchetto Gecko che è necessario per applicazioni che incorporano HTML " \
"per funzionare correttamente. Wine può automaticamente scaricarlo ed installarlo per te.\n\n" \
"Nota: è raccomandato usare i pacchetti delle distribuzioni. Leggi http://wiki.winehq.org/Gecko per i dettagli.",
ID_DWL_STATUS, 10, 10, 240, 50, SS_LEFT
CONTROL "Avanzamento", ID_DWL_PROGRESS, PROGRESS_CLASSA, WS_BORDER|PBS_SMOOTH, 10, 40, 240, 12
DEFPUSHBUTTON "&Installa", ID_DWL_INSTALL, 200, 70, 50, 15, WS_GROUP | WS_TABSTOP
PUSHBUTTON "&Annulla", IDCANCEL, 140, 70, 50, 15, WS_GROUP | WS_TABSTOP
}
IDD_HYPERLINK DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 250, 65
STYLE DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Hyperlink"
FONT 8, "MS Shell Dlg"
{
GROUPBOX "Informazioni sull'hyperlink", -1, 5, 5, 190, 55
LTEXT "&Tipo:", -1, 10, 22, 20, 10
COMBOBOX IDC_TYPE, 35, 20, 45, 100, WS_TABSTOP | WS_GROUP | WS_VSCROLL | CBS_DROPDOWNLIST | CBS_HASSTRINGS
LTEXT "&URL:", -1, 10, 42, 20, 10
EDITTEXT IDC_URL, 35, 40, 150, 14, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 200, 10, 45, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Annulla", IDCANCEL, 200, 28, 45, 14, WS_GROUP | WS_TABSTOP
}
ID_PROMPT_DIALOG DIALOG 0, 0, 200, 90
STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION ""
FONT 8, "MS Shell Dlg"
{
LTEXT "", ID_PROMPT_PROMPT, 10, 10, 180, 30
EDITTEXT ID_PROMPT_EDIT, 10, 45, 180, 14, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 40, 65, 45, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Annulla", IDCANCEL, 115, 65, 45, 15, WS_GROUP | WS_TABSTOP
}
#pragma code_page(default)

View file

@ -69,3 +69,4 @@ FONT 8, "MS Shell Dlg"
PUSHBUTTON "OK", IDOK, 40, 65, 45, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "キャンセル", IDCANCEL, 115, 65, 45, 15, WS_GROUP | WS_TABSTOP
}
#pragma code_page(default)

View file

@ -69,3 +69,4 @@ FONT 8, "MS Shell Dlg"
PUSHBUTTON "Gerai", IDOK, 40, 65, 45, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Atsisakyti", IDCANCEL, 115, 65, 45, 15, WS_GROUP | WS_TABSTOP
}
#pragma code_page(default)

View file

@ -70,3 +70,4 @@ FONT 8, "MS Shell Dlg"
PUSHBUTTON "OK", IDOK, 40, 65, 45, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Avbryt", IDCANCEL, 115, 65, 45, 15, WS_GROUP | WS_TABSTOP
}
#pragma code_page(default)

View file

@ -68,3 +68,4 @@ FONT 8, "MS Shell Dlg"
PUSHBUTTON "V redu", IDOK, 40, 65, 45, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Prekliči", IDCANCEL, 115, 65, 45, 15, WS_GROUP | WS_TABSTOP
}
#pragma code_page(default)

View file

@ -0,0 +1,72 @@
/*
* Copyright 2005-2006 Jacek Caban
* Copyright 2010 Igor Paliychuk
*
* 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 "resource.h"
/* UTF-8 */
#pragma code_page(65001)
LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT
STRINGTABLE DISCARDABLE
{
IDS_HTMLDISABLED "HTML rendering is currently disabled."
IDS_HTMLDOCUMENT "Документ HTML"
IDS_DOWNLOADING "Завантаження..."
IDS_INSTALLING "Встановлення..."
}
ID_DWL_DIALOG DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 260, 95
STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Wine Gecko Installer"
FONT 8, "MS Shell Dlg"
{
LTEXT "Wine не може знайти пакунок Gecko, який потрібний для додатків embedding HTML " \
"для коректної роботи. Wine може автоматично завантажити та встановити його для Вас.\n\n" \
"Зауважте: Рекомендується використати пакет з вашого дистрибутиву. Детальніше читайте http://wiki.winehq.org/Gecko.",
ID_DWL_STATUS, 10, 10, 240, 50, SS_LEFT
CONTROL "Прогрес", ID_DWL_PROGRESS, PROGRESS_CLASSA, WS_BORDER|PBS_SMOOTH, 10, 40, 240, 12
DEFPUSHBUTTON "&Встановити", ID_DWL_INSTALL, 200, 70, 50, 15, WS_GROUP | WS_TABSTOP
PUSHBUTTON "&Скасувати", IDCANCEL, 140, 70, 50, 15, WS_GROUP | WS_TABSTOP
}
IDD_HYPERLINK DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 250, 65
STYLE DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Гіперпосилання"
FONT 8, "MS Shell Dlg"
{
GROUPBOX "Дані про Гіперпосилання", -1, 5, 5, 190, 55
LTEXT "&Тип:", -1, 10, 22, 20, 10
COMBOBOX IDC_TYPE, 35, 20, 45, 100, WS_TABSTOP | WS_GROUP | WS_VSCROLL | CBS_DROPDOWNLIST | CBS_HASSTRINGS
LTEXT "&URL:", -1, 10, 42, 20, 10
EDITTEXT IDC_URL, 35, 40, 150, 14, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 200, 10, 45, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Скасувати", IDCANCEL, 200, 28, 45, 14, WS_GROUP | WS_TABSTOP
}
ID_PROMPT_DIALOG DIALOG 0, 0, 200, 90
STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION ""
FONT 8, "MS Shell Dlg"
{
LTEXT "", ID_PROMPT_PROMPT, 10, 10, 180, 30
EDITTEXT ID_PROMPT_EDIT, 10, 45, 180, 14, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP
PUSHBUTTON "OK", IDOK, 40, 65, 45, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Скасувати", IDCANCEL, 115, 65, 45, 15, WS_GROUP | WS_TABSTOP
}

View file

@ -92,6 +92,7 @@ static REFIID tid_ids[] = {
&DIID_DispHTMLElementCollection,
&DIID_DispHTMLFormElement,
&DIID_DispHTMLGenericElement,
&DIID_DispHTMLFrameElement,
&DIID_DispHTMLIFrame,
&DIID_DispHTMLImg,
&DIID_DispHTMLInputElement,
@ -99,10 +100,12 @@ static REFIID tid_ids[] = {
&DIID_DispHTMLNavigator,
&DIID_DispHTMLOptionElement,
&DIID_DispHTMLScreen,
&DIID_DispHTMLScriptElement,
&DIID_DispHTMLSelectElement,
&DIID_DispHTMLStyle,
&DIID_DispHTMLTable,
&DIID_DispHTMLTableRow,
&DIID_DispHTMLTextAreaElement,
&DIID_DispHTMLUnknownElement,
&DIID_DispHTMLWindow2,
&DIID_HTMLDocumentEvents,
@ -133,12 +136,15 @@ static REFIID tid_ids[] = {
&IID_IHTMLFrameBase,
&IID_IHTMLFrameBase2,
&IID_IHTMLGenericElement,
&IID_IHTMLFrameElement3,
&IID_IHTMLIFrameElement,
&IID_IHTMLImageElementFactory,
&IID_IHTMLImgElement,
&IID_IHTMLInputElement,
&IID_IHTMLLocation,
&IID_IHTMLOptionElement,
&IID_IHTMLScreen,
&IID_IHTMLScriptElement,
&IID_IHTMLSelectElement,
&IID_IHTMLStyle,
&IID_IHTMLStyle2,
@ -146,6 +152,7 @@ static REFIID tid_ids[] = {
&IID_IHTMLStyle4,
&IID_IHTMLTable,
&IID_IHTMLTableRow,
&IID_IHTMLTextAreaElement,
&IID_IHTMLTextContainer,
&IID_IHTMLUniqueName,
&IID_IHTMLWindow2,
@ -397,18 +404,19 @@ HRESULT call_disp_func(IDispatch *disp, DISPPARAMS *dp)
VARIANT res;
HRESULT hres;
hres = IDispatch_QueryInterface(disp, &IID_IDispatchEx, (void**)&dispex);
if(FAILED(hres)) {
FIXME("Could not get IDispatchEx interface: %08x\n", hres);
return hres;
}
VariantInit(&res);
memset(&ei, 0, sizeof(ei));
hres = IDispatchEx_InvokeEx(dispex, 0, GetUserDefaultLCID(), DISPATCH_METHOD, dp, &res, &ei, NULL);
hres = IDispatch_QueryInterface(disp, &IID_IDispatchEx, (void**)&dispex);
if(SUCCEEDED(hres)) {
hres = IDispatchEx_InvokeEx(dispex, 0, GetUserDefaultLCID(), DISPATCH_METHOD, dp, &res, &ei, NULL);
IDispatchEx_Release(dispex);
}else {
TRACE("Could not get IDispatchEx interface: %08x\n", hres);
hres = IDispatch_Invoke(disp, 0, &IID_NULL, GetUserDefaultLCID(), DISPATCH_METHOD,
dp, &res, &ei, NULL);
}
IDispatchEx_Release(dispex);
VariantClear(&res);
return hres;
}
@ -975,7 +983,10 @@ static HRESULT WINAPI DispatchEx_InvokeEx(IDispatchEx *iface, DISPID id, LCID lc
static HRESULT WINAPI DispatchEx_DeleteMemberByName(IDispatchEx *iface, BSTR bstrName, DWORD grfdex)
{
DispatchEx *This = DISPATCHEX_THIS(iface);
FIXME("(%p)->(%s %x)\n", This, debugstr_w(bstrName), grfdex);
TRACE("(%p)->(%s %x)\n", This, debugstr_w(bstrName), grfdex);
/* Not implemented by IE */
return E_NOTIMPL;
}

View file

@ -298,7 +298,7 @@ static void get_font_size(HTMLDocument *This, WCHAR *ret)
TRACE("found font tag %p\n", elem);
nsAString_Init(&size_str, sizeW);
nsAString_InitDepend(&size_str, sizeW);
nsAString_Init(&val_str, NULL);
nsIDOMElement_GetAttribute(elem, &size_str, &val_str);
@ -360,10 +360,11 @@ static void set_font_size(HTMLDocument *This, LPCWSTR size)
create_nselem(This->doc_node, fontW, &elem);
nsAString_Init(&size_str, sizeW);
nsAString_Init(&val_str, size);
nsAString_InitDepend(&size_str, sizeW);
nsAString_InitDepend(&val_str, size);
nsIDOMElement_SetAttribute(elem, &size_str, &val_str);
nsAString_Finish(&val_str);
nsISelection_GetRangeAt(nsselection, 0, &range);
nsISelection_GetIsCollapsed(nsselection, &collapsed);
@ -384,7 +385,6 @@ static void set_font_size(HTMLDocument *This, LPCWSTR size)
nsIDOMElement_Release(elem);
nsAString_Finish(&size_str);
nsAString_Finish(&val_str);
set_dirty(This, VARIANT_TRUE);
}
@ -1167,8 +1167,8 @@ static HRESULT exec_hyperlink(HTMLDocument *This, DWORD cmdexecopt, VARIANT *in,
/* create an element for the link */
create_nselem(This->doc_node, aW, &anchor_elem);
nsAString_Init(&href_str, hrefW);
nsAString_Init(&ns_url, url);
nsAString_InitDepend(&href_str, hrefW);
nsAString_InitDepend(&ns_url, url);
nsIDOMElement_SetAttribute(anchor_elem, &href_str, &ns_url);
nsAString_Finish(&href_str);

View file

@ -520,12 +520,7 @@ static const NodeImplVtbl HTMLAnchorElementImplVtbl = {
static const tid_t HTMLAnchorElement_iface_tids[] = {
IHTMLAnchorElement_tid,
IHTMLDOMNode_tid,
IHTMLDOMNode2_tid,
IHTMLElement_tid,
IHTMLElement2_tid,
IHTMLElement3_tid,
IHTMLElement4_tid,
HTMLELEMENT_TIDS,
IHTMLTextContainer_tid,
IHTMLUniqueName_tid,
0

View file

@ -252,23 +252,18 @@ static HRESULT WINAPI HTMLBodyElement_Invoke(IHTMLBodyElement *iface, DISPID dis
static HRESULT WINAPI HTMLBodyElement_put_background(IHTMLBodyElement *iface, BSTR v)
{
HTMLBodyElement *This = HTMLBODY_THIS(iface);
HRESULT hr = S_OK;
nsAString nsstr;
nsresult nsres;
TRACE("(%p)->(%s)\n", This, debugstr_w(v));
nsAString_Init(&nsstr, v);
nsAString_InitDepend(&nsstr, v);
nsres = nsIDOMHTMLBodyElement_SetBackground(This->nsbody, &nsstr);
if(!NS_SUCCEEDED(nsres))
{
hr = E_FAIL;
}
nsAString_Finish(&nsstr);
if(NS_FAILED(nsres))
return E_FAIL;
return hr;
return S_OK;
}
static HRESULT WINAPI HTMLBodyElement_get_background(IHTMLBodyElement *iface, BSTR *p)
@ -799,12 +794,7 @@ static const NodeImplVtbl HTMLBodyElementImplVtbl = {
static const tid_t HTMLBodyElement_iface_tids[] = {
IHTMLBodyElement_tid,
IHTMLBodyElement2_tid,
IHTMLDOMNode_tid,
IHTMLDOMNode2_tid,
IHTMLElement_tid,
IHTMLElement2_tid,
IHTMLElement3_tid,
IHTMLElement4_tid,
HTMLELEMENT_TIDS,
IHTMLTextContainer_tid,
IHTMLUniqueName_tid,
0

View file

@ -103,8 +103,10 @@ static HRESULT WINAPI HTMLCommentElement_put_text(IHTMLCommentElement *iface, BS
static HRESULT WINAPI HTMLCommentElement_get_text(IHTMLCommentElement *iface, BSTR *p)
{
HTMLCommentElement *This = HTMLCOMMENT_THIS(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
TRACE("(%p)->(%p)\n", This, p);
return IHTMLElement_get_outerHTML(HTMLELEM(&This->element), p);
}
static HRESULT WINAPI HTMLCommentElement_put_atomic(IHTMLCommentElement *iface, LONG v)
@ -171,11 +173,7 @@ static const NodeImplVtbl HTMLCommentElementImplVtbl = {
};
static const tid_t HTMLCommentElement_iface_tids[] = {
IHTMLDOMNode_tid,
IHTMLDOMNode2_tid,
IHTMLElement_tid,
IHTMLElement2_tid,
IHTMLElement3_tid,
HTMLELEMENT_TIDS,
IHTMLCommentElement_tid,
0
};

View file

@ -348,7 +348,7 @@ static HRESULT WINAPI HTMLDocument_put_title(IHTMLDocument2 *iface, BSTR v)
return E_UNEXPECTED;
}
nsAString_Init(&nsstr, v);
nsAString_InitDepend(&nsstr, v);
nsres = nsIDOMHTMLDocument_SetTitle(This->doc_node->nsdoc, &nsstr);
nsAString_Finish(&nsstr);
if(NS_FAILED(nsres))
@ -776,6 +776,9 @@ static HRESULT document_write(HTMLDocument *This, SAFEARRAY *psarray, BOOL ln)
return E_UNEXPECTED;
}
if (!psarray)
return S_OK;
if(psarray->cDims != 1) {
FIXME("cDims=%d\n", psarray->cDims);
return E_INVALIDARG;
@ -1770,6 +1773,9 @@ static BOOL htmldoc_qi(HTMLDocument *This, REFIID riid, void **ppv)
}else if(IsEqualGUID(&IID_IMarshal, riid)) {
TRACE("(%p)->(IID_IMarshal %p) returning NULL\n", This, ppv);
*ppv = NULL;
}else if(IsEqualGUID(&IID_IExternalConnection, riid)) {
TRACE("(%p)->(IID_IExternalConnection %p) returning NULL\n", This, ppv);
*ppv = NULL;
}else if(IsEqualGUID(&IID_IObjectWithSite, riid)) {
TRACE("(%p)->(IID_IObjectWithSite %p)\n", This, ppv);
*ppv = OBJSITE(This);
@ -1989,6 +1995,8 @@ static ULONG WINAPI CustomDoc_Release(ICustomDoc *iface)
if(This->basedoc.advise_holder)
IOleAdviseHolder_Release(This->basedoc.advise_holder);
if(This->view_sink)
IAdviseSink_Release(This->view_sink);
if(This->client)
IOleObject_SetClientSite(OLEOBJ(&This->basedoc), NULL);
if(This->in_place_active)

View file

@ -116,7 +116,7 @@ static HRESULT WINAPI HTMLDocument3_createTextNode(IHTMLDocument3 *iface, BSTR t
return E_UNEXPECTED;
}
nsAString_Init(&text_str, text);
nsAString_InitDepend(&text_str, text);
nsres = nsIDOMHTMLDocument_CreateTextNode(This->doc_node->nsdoc, &text_str, &nstext);
nsAString_Finish(&text_str);
if(NS_FAILED(nsres)) {
@ -443,7 +443,7 @@ static HRESULT WINAPI HTMLDocument3_getElementById(IHTMLDocument3 *iface, BSTR v
return E_UNEXPECTED;
}
nsAString_Init(&id_str, v);
nsAString_InitDepend(&id_str, v);
/* get element by id attribute */
nsres = nsIDOMHTMLDocument_GetElementById(This->doc_node->nsdoc, &id_str, &nselem);
if(FAILED(nsres)) {
@ -455,9 +455,9 @@ static HRESULT WINAPI HTMLDocument3_getElementById(IHTMLDocument3 *iface, BSTR v
/* get first element by name attribute */
nsres = nsIDOMHTMLDocument_GetElementsByName(This->doc_node->nsdoc, &id_str, &nsnode_list);
nsAString_Finish(&id_str);
if(FAILED(nsres)) {
ERR("getElementsByName failed: %08x\n", nsres);
nsAString_Finish(&id_str);
if(nsnode_by_id)
nsIDOMNode_Release(nsnode_by_id);
return E_FAIL;
@ -465,7 +465,6 @@ static HRESULT WINAPI HTMLDocument3_getElementById(IHTMLDocument3 *iface, BSTR v
nsIDOMNodeList_Item(nsnode_list, 0, &nsnode_by_name);
nsIDOMNodeList_Release(nsnode_list);
nsAString_Finish(&id_str);
if(nsnode_by_name && nsnode_by_id) {
nsIDOM3Node *node3;
@ -528,8 +527,8 @@ static HRESULT WINAPI HTMLDocument3_getElementsByTagName(IHTMLDocument3 *iface,
return E_UNEXPECTED;
}
nsAString_Init(&id_str, v);
nsAString_Init(&ns_str, str);
nsAString_InitDepend(&id_str, v);
nsAString_InitDepend(&ns_str, str);
nsres = nsIDOMHTMLDocument_GetElementsByTagNameNS(This->doc_node->nsdoc, &ns_str, &id_str, &nslist);
nsAString_Finish(&id_str);
nsAString_Finish(&ns_str);

View file

@ -136,7 +136,7 @@ static HRESULT WINAPI HTMLDocument5_createComment(IHTMLDocument5 *iface, BSTR bs
return E_UNEXPECTED;
}
nsAString_Init(&str, bstrdata);
nsAString_InitDepend(&str, bstrdata);
nsres = nsIDOMHTMLDocument_CreateComment(This->doc_node->nsdoc, &str, &nscomment);
nsAString_Finish(&str);
if(NS_FAILED(nsres)) {

View file

@ -65,7 +65,7 @@ HRESULT create_nselem(HTMLDocumentNode *doc, const WCHAR *tag, nsIDOMHTMLElement
return E_UNEXPECTED;
}
nsAString_Init(&tag_str, tag);
nsAString_InitDepend(&tag_str, tag);
nsres = nsIDOMDocument_CreateElement(doc->nsdoc, &tag_str, &nselem);
nsAString_Finish(&tag_str);
if(NS_FAILED(nsres)) {
@ -215,7 +215,7 @@ static HRESULT WINAPI HTMLElement_put_className(IHTMLElement *iface, BSTR v)
return E_NOTIMPL;
}
nsAString_Init(&classname_str, v);
nsAString_InitDepend(&classname_str, v);
nsres = nsIDOMHTMLElement_SetClassName(This->nselem, &classname_str);
nsAString_Finish(&classname_str);
if(NS_FAILED(nsres))
@ -269,7 +269,7 @@ static HRESULT WINAPI HTMLElement_put_id(IHTMLElement *iface, BSTR v)
return S_OK;
}
nsAString_Init(&id_str, v);
nsAString_InitDepend(&id_str, v);
nsres = nsIDOMHTMLElement_SetId(This->nselem, &id_str);
nsAString_Finish(&id_str);
if(NS_FAILED(nsres))
@ -593,6 +593,8 @@ static HRESULT WINAPI HTMLElement_get_document(IHTMLElement *iface, IDispatch **
return S_OK;
}
static const WCHAR titleW[] = {'t','i','t','l','e',0};
static HRESULT WINAPI HTMLElement_put_title(IHTMLElement *iface, BSTR v)
{
HTMLElement *This = HTMLELEM_THIS(iface);
@ -601,7 +603,21 @@ static HRESULT WINAPI HTMLElement_put_title(IHTMLElement *iface, BSTR v)
TRACE("(%p)->(%s)\n", This, debugstr_w(v));
nsAString_Init(&title_str, v);
if(!This->nselem) {
VARIANT *var;
HRESULT hres;
hres = dispex_get_dprop_ref(&This->node.dispex, titleW, TRUE, &var);
if(FAILED(hres))
return hres;
VariantClear(var);
V_VT(var) = VT_BSTR;
V_BSTR(var) = v ? SysAllocString(v) : NULL;
return S_OK;
}
nsAString_InitDepend(&title_str, v);
nsres = nsIDOMHTMLElement_SetTitle(This->nselem, &title_str);
nsAString_Finish(&title_str);
if(NS_FAILED(nsres))
@ -618,6 +634,23 @@ static HRESULT WINAPI HTMLElement_get_title(IHTMLElement *iface, BSTR *p)
TRACE("(%p)->(%p)\n", This, p);
if(!This->nselem) {
VARIANT *var;
HRESULT hres;
hres = dispex_get_dprop_ref(&This->node.dispex, titleW, FALSE, &var);
if(hres == DISP_E_UNKNOWNNAME) {
*p = NULL;
}else if(V_VT(var) != VT_BSTR) {
FIXME("title = %s\n", debugstr_variant(var));
return E_FAIL;
}else {
*p = V_BSTR(var) ? SysAllocString(V_BSTR(var)) : NULL;
}
return S_OK;
}
nsAString_Init(&title_str, NULL);
nsres = nsIDOMHTMLElement_GetTitle(This->nselem, &title_str);
if(NS_SUCCEEDED(nsres)) {
@ -820,7 +853,7 @@ static HRESULT WINAPI HTMLElement_put_innerHTML(IHTMLElement *iface, BSTR v)
return E_FAIL;
}
nsAString_Init(&html_str, v);
nsAString_InitDepend(&html_str, v);
nsres = nsIDOMNSHTMLElement_SetInnerHTML(nselem, &html_str);
nsAString_Finish(&html_str);
@ -896,7 +929,7 @@ static HRESULT WINAPI HTMLElement_put_innerText(IHTMLElement *iface, BSTR v)
nsIDOMNode_Release(tmp);
}
nsAString_Init(&text_str, v);
nsAString_InitDepend(&text_str, v);
nsres = nsIDOMHTMLDocument_CreateTextNode(This->node.doc->nsdoc, &text_str, &text_node);
nsAString_Finish(&text_str);
if(NS_FAILED(nsres)) {
@ -955,7 +988,7 @@ static HRESULT WINAPI HTMLElement_put_outerHTML(IHTMLElement *iface, BSTR v)
return E_FAIL;
}
nsAString_Init(&html_str, v);
nsAString_InitDepend(&html_str, v);
nsIDOMNSRange_CreateContextualFragment(nsrange, &html_str, &nsfragment);
nsIDOMNSRange_Release(nsrange);
nsAString_Finish(&html_str);
@ -1131,7 +1164,7 @@ static HRESULT WINAPI HTMLElement_insertAdjacentHTML(IHTMLElement *iface, BSTR w
return E_FAIL;
}
nsAString_Init(&ns_html, html);
nsAString_InitDepend(&ns_html, html);
nsres = nsIDOMNSRange_CreateContextualFragment(nsrange, &ns_html, (nsIDOMDocumentFragment **)&nsnode);
nsIDOMNSRange_Release(nsrange);
@ -1166,7 +1199,7 @@ static HRESULT WINAPI HTMLElement_insertAdjacentText(IHTMLElement *iface, BSTR w
}
nsAString_Init(&ns_text, text);
nsAString_InitDepend(&ns_text, text);
nsres = nsIDOMDocument_CreateTextNode(This->node.doc->nsdoc, &ns_text, (nsIDOMText **)&nsnode);
nsAString_Finish(&ns_text);
@ -1572,11 +1605,7 @@ static const NodeImplVtbl HTMLElementImplVtbl = {
};
static const tid_t HTMLElement_iface_tids[] = {
IHTMLDOMNode_tid,
IHTMLDOMNode2_tid,
IHTMLElement_tid,
IHTMLElement2_tid,
IHTMLElement3_tid,
HTMLELEMENT_TIDS,
0
};
@ -1675,7 +1704,7 @@ HTMLElement *HTMLElement_Create(HTMLDocumentNode *doc, nsIDOMNode *nsnode, BOOL
if(!ret) {
ret = heap_alloc_zero(sizeof(HTMLElement));
HTMLElement_Init(ret, doc, nselem, NULL);
HTMLElement_Init(ret, doc, nselem, &HTMLElement_dispex);
ret->node.vtbl = &HTMLElementImplVtbl;
}

View file

@ -655,8 +655,10 @@ static HRESULT WINAPI HTMLElement2_attachEvent(IHTMLElement2 *iface, BSTR event,
static HRESULT WINAPI HTMLElement2_detachEvent(IHTMLElement2 *iface, BSTR event, IDispatch *pDisp)
{
HTMLElement *This = HTMLELEM2_THIS(iface);
FIXME("(%p)->(%s %p)\n", This, debugstr_w(event), pDisp);
return E_NOTIMPL;
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);
}
static HRESULT WINAPI HTMLElement2_get_readyState(IHTMLElement2 *iface, VARIANT *p)
@ -1087,7 +1089,7 @@ static HRESULT WINAPI HTMLElement2_getElementsByTagName(IHTMLElement2 *iface, BS
TRACE("(%p)->(%s %p)\n", This, debugstr_w(v), pelColl);
nsAString_Init(&tag_str, v);
nsAString_InitDepend(&tag_str, v);
nsres = nsIDOMHTMLElement_GetElementsByTagName(This->nselem, &tag_str, &nslist);
nsAString_Finish(&tag_str);
if(NS_FAILED(nsres)) {

View file

@ -245,7 +245,7 @@ static BOOL is_elem_name(HTMLElement *elem, LPCWSTR name)
return TRUE;
}
nsAString_Init(&nsname, nameW);
nsAString_InitDepend(&nsname, nameW);
nsres = nsIDOMHTMLElement_GetAttribute(elem->nselem, &nsname, &nsstr);
nsAString_Finish(&nsname);
if(NS_SUCCEEDED(nsres)) {

View file

@ -743,7 +743,7 @@ static IHTMLEventObj *create_event(HTMLDOMNode *target, eventid_t eid, nsIDOMEve
if(NS_SUCCEEDED(nsres)) {
nsAString type_str;
nsAString_Init(&type_str, event_types[event_info[eid].type]);
nsAString_InitDepend(&type_str, event_types[event_info[eid].type]);
nsres = nsIDOMDocumentEvent_CreateEvent(doc_event, &type_str, &ret->nsevent);
nsAString_Finish(&type_str);
nsIDOMDocumentEvent_Release(doc_event);
@ -816,7 +816,7 @@ static void call_event_handlers(HTMLDocumentNode *doc, IHTMLEventObj *event_obj,
ConnectionPointContainer *cp_container, eventid_t eid, IDispatch *this_obj)
{
handler_vector_t *handler_vector = NULL;
DWORD i;
int i;
HRESULT hres;
if(event_target)
@ -845,7 +845,8 @@ static void call_event_handlers(HTMLDocumentNode *doc, IHTMLEventObj *event_obj,
V_VT(&arg) = VT_DISPATCH;
V_DISPATCH(&arg) = (IDispatch*)event_obj;
for(i=0; i < handler_vector->handler_cnt; i++) {
i = handler_vector->handler_cnt;
while(i--) {
if(handler_vector->handlers[i]) {
TRACE("%s [%d] >>>\n", debugstr_w(event_info[eid].name), i);
hres = call_disp_func(handler_vector->handlers[i], &dp);
@ -866,6 +867,9 @@ static void call_event_handlers(HTMLDocumentNode *doc, IHTMLEventObj *event_obj,
for(cp = cp_container->cp_list; cp; cp = cp->next) {
if(cp->sinks_size && is_cp_event(cp->data, event_info[eid].dispid)) {
for(i=0; i < cp->sinks_size; i++) {
if(!cp->sinks[i].disp)
continue;
TRACE("cp %s [%d] >>>\n", debugstr_w(event_info[eid].name), i);
hres = call_cp_func(cp->sinks[i].disp, event_info[eid].dispid);
if(hres == S_OK)
@ -1124,6 +1128,34 @@ HRESULT attach_event(event_target_t **event_target_ptr, HTMLDocument *doc, BSTR
event_target->event_table[eid]->handlers[i] = disp;
*res = VARIANT_TRUE;
return ensure_nsevent_handler(doc->doc_node, eid);
}
HRESULT detach_event(event_target_t *event_target, HTMLDocument *doc, BSTR name, IDispatch *disp)
{
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])
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;
}
i++;
}
return S_OK;
}

View file

@ -46,6 +46,7 @@ void fire_event(HTMLDocumentNode*,eventid_t,nsIDOMNode*,nsIDOMEvent*);
HRESULT set_event_handler(event_target_t**,HTMLDocumentNode*,eventid_t,VARIANT*);
HRESULT get_event_handler(event_target_t**,eventid_t,VARIANT*);
HRESULT attach_event(event_target_t**,HTMLDocument*,BSTR,IDispatch*,VARIANT_BOOL*);
HRESULT detach_event(event_target_t*,HTMLDocument*,BSTR,IDispatch*);
HRESULT dispatch_event(HTMLDOMNode*,const WCHAR*,VARIANT*,VARIANT_BOOL*);
HRESULT call_event(HTMLDOMNode*,eventid_t);
void update_cp_events(HTMLWindow*,cp_static_data_t*);

View file

@ -343,10 +343,12 @@ static HRESULT HTMLFormElement_get_dispid(HTMLDOMNode *iface,
{
HTMLFormElement *This = HTMLFORM_NODE_THIS(iface);
nsIDOMHTMLCollection *elements;
nsAString nsname, nsstr;
PRUint32 len, i;
static const PRUnichar nameW[] = {'n','a','m','e',0};
nsAString nsname;
nsresult nsres;
HRESULT hres = DISP_E_UNKNOWNNAME;
static const PRUnichar nameW[] = {'n','a','m','e',0};
TRACE("(%p)->(%s %x %p)\n", This, wine_dbgstr_w(name), grfdex, pid);
@ -363,72 +365,62 @@ static HRESULT HTMLFormElement_get_dispid(HTMLDOMNode *iface,
return E_FAIL;
}
nsAString_Init(&nsname, nameW);
nsAString_InitDepend(&nsname, nameW);
nsAString_Init(&nsstr, NULL);
for(i = 0; i < len; ++i) {
nsIDOMNode *nsitem;
nsIDOMHTMLElement *nshtml_elem;
nsAString nsstr;
const PRUnichar *str;
nsres = nsIDOMHTMLCollection_Item(elements, i, &nsitem);
if(NS_FAILED(nsres)) {
FIXME("Item failed: 0x%08x\n", nsres);
nsAString_Finish(&nsname);
nsIDOMHTMLCollection_Release(elements);
return E_FAIL;
hres = E_FAIL;
break;
}
nsres = nsIDOMNode_QueryInterface(nsitem, &IID_nsIDOMHTMLElement, (void**)&nshtml_elem);
nsIDOMNode_Release(nsitem);
if(NS_FAILED(nsres)) {
FIXME("Failed to get nsIDOMHTMLNode interface: 0x%08x\n", nsres);
nsAString_Finish(&nsname);
nsIDOMHTMLCollection_Release(elements);
return E_FAIL;
hres = E_FAIL;
break;
}
/* compare by id attr */
nsAString_Init(&nsstr, NULL);
nsres = nsIDOMHTMLElement_GetId(nshtml_elem, &nsstr);
if(NS_FAILED(nsres)) {
FIXME("GetId failed: 0x%08x\n", nsres);
nsAString_Finish(&nsname);
nsIDOMHTMLElement_Release(nshtml_elem);
nsIDOMHTMLCollection_Release(elements);
return E_FAIL;
hres = E_FAIL;
break;
}
nsAString_GetData(&nsstr, &str);
if(!strcmpiW(str, name)) {
nsIDOMHTMLElement_Release(nshtml_elem);
/* FIXME: using index for dispid */
*pid = MSHTML_DISPID_CUSTOM_MIN + i;
nsAString_Finish(&nsname);
nsAString_Finish(&nsstr);
nsIDOMHTMLElement_Release(nshtml_elem);
nsIDOMHTMLCollection_Release(elements);
return S_OK;
hres = S_OK;
break;
}
/* compare by name attr */
nsres = nsIDOMHTMLElement_GetAttribute(nshtml_elem, &nsname, &nsstr);
nsIDOMHTMLElement_Release(nshtml_elem);
nsAString_GetData(&nsstr, &str);
if(!strcmpiW(str, name)) {
/* FIXME: using index for dispid */
*pid = MSHTML_DISPID_CUSTOM_MIN + i;
nsAString_Finish(&nsname);
nsAString_Finish(&nsstr);
nsIDOMHTMLElement_Release(nshtml_elem);
nsIDOMHTMLCollection_Release(elements);
return S_OK;
hres = S_OK;
break;
}
nsAString_Finish(&nsstr);
nsIDOMHTMLElement_Release(nshtml_elem);
}
nsAString_Finish(&nsname);
nsAString_Finish(&nsstr);
nsIDOMHTMLCollection_Release(elements);
return DISP_E_UNKNOWNNAME;
return hres;
}
static HRESULT HTMLFormElement_invoke(HTMLDOMNode *iface,
@ -483,11 +475,7 @@ static const NodeImplVtbl HTMLFormElementImplVtbl = {
};
static const tid_t HTMLFormElement_iface_tids[] = {
IHTMLDOMNode_tid,
IHTMLDOMNode2_tid,
IHTMLElement_tid,
IHTMLElement2_tid,
IHTMLElement3_tid,
HTMLELEMENT_TIDS,
IHTMLFormElement_tid,
0
};

View file

@ -0,0 +1,299 @@
/*
* Copyright 2010 Jacek Caban for CodeWeavers
*
* 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 <stdarg.h>
#define COBJMACROS
#include "windef.h"
#include "winbase.h"
#include "winuser.h"
#include "ole2.h"
#include "mshtml_private.h"
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
typedef struct {
HTMLFrameBase framebase;
const IHTMLFrameElement3Vtbl *lpIHTMLFrameElement3Vtbl;
} HTMLFrameElement;
#define HTMLFRAMEELEM3(x) ((IHTMLFrameElement3*) &(x)->lpIHTMLFrameElement3Vtbl)
#define HTMLFRAME3_THIS(iface) DEFINE_THIS(HTMLFrameElement, IHTMLFrameElement3, iface)
static HRESULT WINAPI HTMLFrameElement3_QueryInterface(IHTMLFrameElement3 *iface,
REFIID riid, void **ppv)
{
HTMLFrameElement *This = HTMLFRAME3_THIS(iface);
return IHTMLDOMNode_QueryInterface(HTMLDOMNODE(&This->framebase.element.node), riid, ppv);
}
static ULONG WINAPI HTMLFrameElement3_AddRef(IHTMLFrameElement3 *iface)
{
HTMLFrameElement *This = HTMLFRAME3_THIS(iface);
return IHTMLDOMNode_AddRef(HTMLDOMNODE(&This->framebase.element.node));
}
static ULONG WINAPI HTMLFrameElement3_Release(IHTMLFrameElement3 *iface)
{
HTMLFrameElement *This = HTMLFRAME3_THIS(iface);
return IHTMLDOMNode_Release(HTMLDOMNODE(&This->framebase.element.node));
}
static HRESULT WINAPI HTMLFrameElement3_GetTypeInfoCount(IHTMLFrameElement3 *iface, UINT *pctinfo)
{
HTMLFrameElement *This = HTMLFRAME3_THIS(iface);
return IDispatchEx_GetTypeInfoCount(DISPATCHEX(&This->framebase.element.node.dispex), pctinfo);
}
static HRESULT WINAPI HTMLFrameElement3_GetTypeInfo(IHTMLFrameElement3 *iface, UINT iTInfo,
LCID lcid, ITypeInfo **ppTInfo)
{
HTMLFrameElement *This = HTMLFRAME3_THIS(iface);
return IDispatchEx_GetTypeInfo(DISPATCHEX(&This->framebase.element.node.dispex), iTInfo, lcid, ppTInfo);
}
static HRESULT WINAPI HTMLFrameElement3_GetIDsOfNames(IHTMLFrameElement3 *iface, REFIID riid,
LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
{
HTMLFrameElement *This = HTMLFRAME3_THIS(iface);
return IDispatchEx_GetIDsOfNames(DISPATCHEX(&This->framebase.element.node.dispex), riid, rgszNames, cNames, lcid, rgDispId);
}
static HRESULT WINAPI HTMLFrameElement3_Invoke(IHTMLFrameElement3 *iface, DISPID dispIdMember,
REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams,
VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
{
HTMLFrameElement *This = HTMLFRAME3_THIS(iface);
return IDispatchEx_Invoke(DISPATCHEX(&This->framebase.element.node.dispex), dispIdMember, riid,
lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
}
static HRESULT WINAPI HTMLFrameElement3_get_contentDocument(IHTMLFrameElement3 *iface, IDispatch **p)
{
HTMLFrameElement *This = HTMLFRAME3_THIS(iface);
IHTMLDocument2 *doc;
HRESULT hres;
TRACE("(%p)->(%p)\n", This, p);
if(!This->framebase.content_window) {
FIXME("NULL window\n");
return E_FAIL;
}
hres = IHTMLWindow2_get_document(HTMLWINDOW2(This->framebase.content_window), &doc);
if(FAILED(hres))
return hres;
*p = doc ? (IDispatch*)doc : NULL;
return S_OK;
}
static HRESULT WINAPI HTMLFrameElement3_put_src(IHTMLFrameElement3 *iface, BSTR v)
{
HTMLFrameElement *This = HTMLFRAME3_THIS(iface);
FIXME("(%p)->(%s)\n", This, debugstr_w(v));
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLFrameElement3_get_src(IHTMLFrameElement3 *iface, BSTR *p)
{
HTMLFrameElement *This = HTMLFRAME3_THIS(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLFrameElement3_put_longDesc(IHTMLFrameElement3 *iface, BSTR v)
{
HTMLFrameElement *This = HTMLFRAME3_THIS(iface);
FIXME("(%p)->(%s)\n", This, debugstr_w(v));
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLFrameElement3_get_longDesc(IHTMLFrameElement3 *iface, BSTR *p)
{
HTMLFrameElement *This = HTMLFRAME3_THIS(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLFrameElement3_put_frameBorder(IHTMLFrameElement3 *iface, BSTR v)
{
HTMLFrameElement *This = HTMLFRAME3_THIS(iface);
FIXME("(%p)->(%s)\n", This, debugstr_w(v));
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLFrameElement3_get_frameBorder(IHTMLFrameElement3 *iface, BSTR *p)
{
HTMLFrameElement *This = HTMLFRAME3_THIS(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
#undef HTMLFRAME3_THIS
static const IHTMLFrameElement3Vtbl HTMLFrameElement3Vtbl = {
HTMLFrameElement3_QueryInterface,
HTMLFrameElement3_AddRef,
HTMLFrameElement3_Release,
HTMLFrameElement3_GetTypeInfoCount,
HTMLFrameElement3_GetTypeInfo,
HTMLFrameElement3_GetIDsOfNames,
HTMLFrameElement3_Invoke,
HTMLFrameElement3_get_contentDocument,
HTMLFrameElement3_put_src,
HTMLFrameElement3_get_src,
HTMLFrameElement3_put_longDesc,
HTMLFrameElement3_get_longDesc,
HTMLFrameElement3_put_frameBorder,
HTMLFrameElement3_get_frameBorder
};
#define HTMLFRAME_NODE_THIS(iface) DEFINE_THIS2(HTMLFrameElement, framebase.element.node, iface)
static HRESULT HTMLFrameElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv)
{
HTMLFrameElement *This = HTMLFRAME_NODE_THIS(iface);
if(IsEqualGUID(&IID_IHTMLFrameElement3, riid)) {
TRACE("(%p)->(IID_IHTMLFrameElement3 %p)\n", This, ppv);
*ppv = HTMLFRAMEELEM3(This);
}else {
return HTMLFrameBase_QI(&This->framebase, riid, ppv);
}
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
static void HTMLFrameElement_destructor(HTMLDOMNode *iface)
{
HTMLFrameElement *This = HTMLFRAME_NODE_THIS(iface);
HTMLFrameBase_destructor(&This->framebase);
}
static HRESULT HTMLFrameElement_get_document(HTMLDOMNode *iface, IDispatch **p)
{
HTMLFrameElement *This = HTMLFRAME_NODE_THIS(iface);
if(!This->framebase.content_window || !This->framebase.content_window->doc) {
*p = NULL;
return S_OK;
}
*p = (IDispatch*)HTMLDOC(&This->framebase.content_window->doc->basedoc);
IDispatch_AddRef(*p);
return S_OK;
}
static HRESULT HTMLFrameElement_get_dispid(HTMLDOMNode *iface, BSTR name,
DWORD grfdex, DISPID *pid)
{
HTMLFrameElement *This = HTMLFRAME_NODE_THIS(iface);
if(!This->framebase.content_window)
return DISP_E_UNKNOWNNAME;
return search_window_props(This->framebase.content_window, name, grfdex, pid);
}
static HRESULT HTMLFrameElement_invoke(HTMLDOMNode *iface, DISPID id, LCID lcid,
WORD flags, DISPPARAMS *params, VARIANT *res, EXCEPINFO *ei, IServiceProvider *caller)
{
HTMLFrameElement *This = HTMLFRAME_NODE_THIS(iface);
if(!This->framebase.content_window) {
ERR("no content window to invoke on\n");
return E_FAIL;
}
return IDispatchEx_InvokeEx(DISPATCHEX(This->framebase.content_window), id, lcid, flags, params, res, ei, caller);
}
static HRESULT HTMLFrameElement_bind_to_tree(HTMLDOMNode *iface)
{
HTMLFrameElement *This = HTMLFRAME_NODE_THIS(iface);
nsIDOMDocument *nsdoc;
nsresult nsres;
HRESULT hres;
nsres = nsIDOMHTMLFrameElement_GetContentDocument(This->framebase.nsframe, &nsdoc);
if(NS_FAILED(nsres) || !nsdoc) {
ERR("GetContentDocument failed: %08x\n", nsres);
return E_FAIL;
}
hres = set_frame_doc(&This->framebase, nsdoc);
nsIDOMDocument_Release(nsdoc);
return hres;
}
#undef HTMLFRAME_NODE_THIS
static const NodeImplVtbl HTMLFrameElementImplVtbl = {
HTMLFrameElement_QI,
HTMLFrameElement_destructor,
NULL,
NULL,
NULL,
NULL,
HTMLFrameElement_get_document,
NULL,
HTMLFrameElement_get_dispid,
HTMLFrameElement_invoke,
HTMLFrameElement_bind_to_tree
};
static const tid_t HTMLFrameElement_iface_tids[] = {
HTMLELEMENT_TIDS,
IHTMLFrameBase_tid,
IHTMLFrameBase2_tid,
IHTMLFrameElement3_tid,
0
};
static dispex_static_data_t HTMLFrameElement_dispex = {
NULL,
DispHTMLFrameElement_tid,
NULL,
HTMLFrameElement_iface_tids
};
HTMLElement *HTMLFrameElement_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem)
{
HTMLFrameElement *ret;
ret = heap_alloc_zero(sizeof(HTMLFrameElement));
ret->framebase.element.node.vtbl = &HTMLFrameElementImplVtbl;
ret->lpIHTMLFrameElement3Vtbl = &HTMLFrameElement3Vtbl;
HTMLFrameBase_Init(&ret->framebase, doc, nselem, &HTMLFrameElement_dispex);
return &ret->framebase.element;
}

View file

@ -283,10 +283,10 @@ static HRESULT WINAPI HTMLFrameBase_put_scrolling(IHTMLFrameBase *iface, BSTR v)
return E_INVALIDARG;
if(This->nsframe) {
nsAString_Init(&nsstr, v);
nsAString_InitDepend(&nsstr, v);
nsres = nsIDOMHTMLFrameElement_SetScrolling(This->nsframe, &nsstr);
}else if(This->nsiframe) {
nsAString_Init(&nsstr, v);
nsAString_InitDepend(&nsstr, v);
nsres = nsIDOMHTMLIFrameElement_SetScrolling(This->nsiframe, &nsstr);
}else {
ERR("No attached ns frame object\n");
@ -562,108 +562,3 @@ void HTMLFrameBase_Init(HTMLFrameBase *This, HTMLDocumentNode *doc, nsIDOMHTMLEl
}else
This->nsiframe = NULL;
}
typedef struct {
HTMLFrameBase framebase;
} HTMLFrameElement;
#define HTMLFRAME_NODE_THIS(iface) DEFINE_THIS2(HTMLFrameElement, framebase.element.node, iface)
static HRESULT HTMLFrameElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv)
{
HTMLFrameElement *This = HTMLFRAME_NODE_THIS(iface);
return HTMLFrameBase_QI(&This->framebase, riid, ppv);
}
static void HTMLFrameElement_destructor(HTMLDOMNode *iface)
{
HTMLFrameElement *This = HTMLFRAME_NODE_THIS(iface);
HTMLFrameBase_destructor(&This->framebase);
}
static HRESULT HTMLFrameElement_get_document(HTMLDOMNode *iface, IDispatch **p)
{
HTMLFrameElement *This = HTMLFRAME_NODE_THIS(iface);
if(!This->framebase.content_window || !This->framebase.content_window->doc) {
*p = NULL;
return S_OK;
}
*p = (IDispatch*)HTMLDOC(&This->framebase.content_window->doc->basedoc);
IDispatch_AddRef(*p);
return S_OK;
}
static HRESULT HTMLFrameElement_get_dispid(HTMLDOMNode *iface, BSTR name,
DWORD grfdex, DISPID *pid)
{
HTMLFrameElement *This = HTMLFRAME_NODE_THIS(iface);
if(!This->framebase.content_window)
return DISP_E_UNKNOWNNAME;
return search_window_props(This->framebase.content_window, name, grfdex, pid);
}
static HRESULT HTMLFrameElement_invoke(HTMLDOMNode *iface, DISPID id, LCID lcid,
WORD flags, DISPPARAMS *params, VARIANT *res, EXCEPINFO *ei, IServiceProvider *caller)
{
HTMLFrameElement *This = HTMLFRAME_NODE_THIS(iface);
if(!This->framebase.content_window) {
ERR("no content window to invoke on\n");
return E_FAIL;
}
return IDispatchEx_InvokeEx(DISPATCHEX(This->framebase.content_window), id, lcid, flags, params, res, ei, caller);
}
static HRESULT HTMLFrameElement_bind_to_tree(HTMLDOMNode *iface)
{
HTMLFrameElement *This = HTMLFRAME_NODE_THIS(iface);
nsIDOMDocument *nsdoc;
nsresult nsres;
HRESULT hres;
nsres = nsIDOMHTMLFrameElement_GetContentDocument(This->framebase.nsframe, &nsdoc);
if(NS_FAILED(nsres) || !nsdoc) {
ERR("GetContentDocument failed: %08x\n", nsres);
return E_FAIL;
}
hres = set_frame_doc(&This->framebase, nsdoc);
nsIDOMDocument_Release(nsdoc);
return hres;
}
#undef HTMLFRAME_NODE_THIS
static const NodeImplVtbl HTMLFrameElementImplVtbl = {
HTMLFrameElement_QI,
HTMLFrameElement_destructor,
NULL,
NULL,
NULL,
NULL,
HTMLFrameElement_get_document,
NULL,
HTMLFrameElement_get_dispid,
HTMLFrameElement_invoke,
HTMLFrameElement_bind_to_tree
};
HTMLElement *HTMLFrameElement_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem)
{
HTMLFrameElement *ret;
ret = heap_alloc_zero(sizeof(HTMLFrameElement));
ret->framebase.element.node.vtbl = &HTMLFrameElementImplVtbl;
HTMLFrameBase_Init(&ret->framebase, doc, nselem, NULL);
return &ret->framebase.element;
}

View file

@ -153,11 +153,7 @@ static const NodeImplVtbl HTMLGenericElementImplVtbl = {
};
static const tid_t HTMLGenericElement_iface_tids[] = {
IHTMLDOMNode_tid,
IHTMLDOMNode2_tid,
IHTMLElement_tid,
IHTMLElement2_tid,
IHTMLElement3_tid,
HTMLELEMENT_TIDS,
IHTMLGenericElement_tid,
0
};

View file

@ -33,15 +33,139 @@ WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
typedef struct {
HTMLFrameBase framebase;
const IHTMLIFrameElementVtbl *lpIHTMLIFrameElementVtbl;
} HTMLIFrame;
#define HTMLIFRAMEELEM(x) ((IHTMLIFrameElement*) &(x)->lpIHTMLIFrameElementVtbl)
#define HTMLIFRAME_THIS(iface) DEFINE_THIS(HTMLIFrame, IHTMLIFrameElement, iface)
static HRESULT WINAPI HTMLIFrameElement_QueryInterface(IHTMLIFrameElement *iface,
REFIID riid, void **ppv)
{
HTMLIFrame *This = HTMLIFRAME_THIS(iface);
return IHTMLDOMNode_QueryInterface(HTMLDOMNODE(&This->framebase.element.node), riid, ppv);
}
static ULONG WINAPI HTMLIFrameElement_AddRef(IHTMLIFrameElement *iface)
{
HTMLIFrame *This = HTMLIFRAME_THIS(iface);
return IHTMLDOMNode_AddRef(HTMLDOMNODE(&This->framebase.element.node));
}
static ULONG WINAPI HTMLIFrameElement_Release(IHTMLIFrameElement *iface)
{
HTMLIFrame *This = HTMLIFRAME_THIS(iface);
return IHTMLDOMNode_Release(HTMLDOMNODE(&This->framebase.element.node));
}
static HRESULT WINAPI HTMLIFrameElement_GetTypeInfoCount(IHTMLIFrameElement *iface, UINT *pctinfo)
{
HTMLIFrame *This = HTMLIFRAME_THIS(iface);
return IDispatchEx_GetTypeInfoCount(DISPATCHEX(&This->framebase.element.node.dispex), pctinfo);
}
static HRESULT WINAPI HTMLIFrameElement_GetTypeInfo(IHTMLIFrameElement *iface, UINT iTInfo,
LCID lcid, ITypeInfo **ppTInfo)
{
HTMLIFrame *This = HTMLIFRAME_THIS(iface);
return IDispatchEx_GetTypeInfo(DISPATCHEX(&This->framebase.element.node.dispex), iTInfo, lcid, ppTInfo);
}
static HRESULT WINAPI HTMLIFrameElement_GetIDsOfNames(IHTMLIFrameElement *iface, REFIID riid,
LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
{
HTMLIFrame *This = HTMLIFRAME_THIS(iface);
return IDispatchEx_GetIDsOfNames(DISPATCHEX(&This->framebase.element.node.dispex), riid, rgszNames, cNames, lcid, rgDispId);
}
static HRESULT WINAPI HTMLIFrameElement_Invoke(IHTMLIFrameElement *iface, DISPID dispIdMember,
REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams,
VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
{
HTMLIFrame *This = HTMLIFRAME_THIS(iface);
return IDispatchEx_Invoke(DISPATCHEX(&This->framebase.element.node.dispex), dispIdMember, riid,
lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
}
static HRESULT WINAPI HTMLIFrameElement_put_vspace(IHTMLIFrameElement *iface, LONG v)
{
HTMLIFrame *This = HTMLIFRAME_THIS(iface);
FIXME("(%p)->(%d)\n", This, v);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLIFrameElement_get_vspace(IHTMLIFrameElement *iface, LONG *p)
{
HTMLIFrame *This = HTMLIFRAME_THIS(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLIFrameElement_put_hspace(IHTMLIFrameElement *iface, LONG v)
{
HTMLIFrame *This = HTMLIFRAME_THIS(iface);
FIXME("(%p)->(%d)\n", This, v);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLIFrameElement_get_hspace(IHTMLIFrameElement *iface, LONG *p)
{
HTMLIFrame *This = HTMLIFRAME_THIS(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLIFrameElement_put_align(IHTMLIFrameElement *iface, BSTR v)
{
HTMLIFrame *This = HTMLIFRAME_THIS(iface);
FIXME("(%p)->(%s)\n", This, debugstr_w(v));
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLIFrameElement_get_align(IHTMLIFrameElement *iface, BSTR *p)
{
HTMLIFrame *This = HTMLIFRAME_THIS(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
#undef HTMLIFRAME_THIS
static const IHTMLIFrameElementVtbl HTMLIFrameElementVtbl = {
HTMLIFrameElement_QueryInterface,
HTMLIFrameElement_AddRef,
HTMLIFrameElement_Release,
HTMLIFrameElement_GetTypeInfoCount,
HTMLIFrameElement_GetTypeInfo,
HTMLIFrameElement_GetIDsOfNames,
HTMLIFrameElement_Invoke,
HTMLIFrameElement_put_vspace,
HTMLIFrameElement_get_vspace,
HTMLIFrameElement_put_hspace,
HTMLIFrameElement_get_hspace,
HTMLIFrameElement_put_align,
HTMLIFrameElement_get_align
};
#define HTMLIFRAME_NODE_THIS(iface) DEFINE_THIS2(HTMLIFrame, framebase.element.node, iface)
static HRESULT HTMLIFrame_QI(HTMLDOMNode *iface, REFIID riid, void **ppv)
{
HTMLIFrame *This = HTMLIFRAME_NODE_THIS(iface);
return HTMLFrameBase_QI(&This->framebase, riid, ppv);
if(IsEqualGUID(&IID_IHTMLIFrameElement, riid)) {
TRACE("(%p)->(IID_IHTMLIFrameElement %p)\n", This, ppv);
*ppv = HTMLIFRAMEELEM(This);
}else {
return HTMLFrameBase_QI(&This->framebase, riid, ppv);
}
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
static void HTMLIFrame_destructor(HTMLDOMNode *iface)
@ -131,13 +255,10 @@ static const NodeImplVtbl HTMLIFrameImplVtbl = {
};
static const tid_t HTMLIFrame_iface_tids[] = {
IHTMLDOMNode_tid,
IHTMLDOMNode2_tid,
IHTMLElement_tid,
IHTMLElement2_tid,
IHTMLElement3_tid,
HTMLELEMENT_TIDS,
IHTMLFrameBase_tid,
IHTMLFrameBase2_tid,
IHTMLIFrameElement_tid,
0
};
@ -154,6 +275,7 @@ HTMLElement *HTMLIFrame_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem)
ret = heap_alloc_zero(sizeof(HTMLIFrame));
ret->lpIHTMLIFrameElementVtbl = &HTMLIFrameElementVtbl;
ret->framebase.element.node.vtbl = &HTMLIFrameImplVtbl;
HTMLFrameBase_Init(&ret->framebase, doc, nselem, &HTMLIFrame_dispex);

View file

@ -228,7 +228,7 @@ static HRESULT WINAPI HTMLImgElement_put_alt(IHTMLImgElement *iface, BSTR v)
TRACE("(%p)->(%s)\n", This, debugstr_w(v));
nsAString_Init(&alt_str, v);
nsAString_InitDepend(&alt_str, v);
nsres = nsIDOMHTMLImageElement_SetAlt(This->nsimg, &alt_str);
nsAString_Finish(&alt_str);
if(NS_FAILED(nsres))
@ -268,7 +268,7 @@ static HRESULT WINAPI HTMLImgElement_put_src(IHTMLImgElement *iface, BSTR v)
TRACE("(%p)->(%s)\n", This, debugstr_w(v));
nsAString_Init(&src_str, v);
nsAString_InitDepend(&src_str, v);
nsres = nsIDOMHTMLImageElement_SetSrc(This->nsimg, &src_str);
nsAString_Finish(&src_str);
if(NS_FAILED(nsres))
@ -460,29 +460,69 @@ static HRESULT WINAPI HTMLImgElement_get_name(IHTMLImgElement *iface, BSTR *p)
static HRESULT WINAPI HTMLImgElement_put_width(IHTMLImgElement *iface, LONG v)
{
HTMLImgElement *This = HTMLIMG_THIS(iface);
FIXME("(%p)->(%d)\n", This, v);
return E_NOTIMPL;
nsresult nsres;
TRACE("(%p)->(%d)\n", This, v);
nsres = nsIDOMHTMLImageElement_SetWidth(This->nsimg, v);
if(NS_FAILED(nsres)) {
ERR("SetWidth failed: %08x\n", nsres);
return E_FAIL;
}
return S_OK;
}
static HRESULT WINAPI HTMLImgElement_get_width(IHTMLImgElement *iface, LONG *p)
{
HTMLImgElement *This = HTMLIMG_THIS(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
PRInt32 width;
nsresult nsres;
TRACE("(%p)->(%p)\n", This, p);
nsres = nsIDOMHTMLImageElement_GetWidth(This->nsimg, &width);
if(NS_FAILED(nsres)) {
ERR("GetWidth failed: %08x\n", nsres);
return E_FAIL;
}
*p = width;
return S_OK;
}
static HRESULT WINAPI HTMLImgElement_put_height(IHTMLImgElement *iface, LONG v)
{
HTMLImgElement *This = HTMLIMG_THIS(iface);
FIXME("(%p)->(%d)\n", This, v);
return E_NOTIMPL;
nsresult nsres;
TRACE("(%p)->(%d)\n", This, v);
nsres = nsIDOMHTMLImageElement_SetHeight(This->nsimg, v);
if(NS_FAILED(nsres)) {
ERR("SetHeight failed: %08x\n", nsres);
return E_FAIL;
}
return S_OK;
}
static HRESULT WINAPI HTMLImgElement_get_height(IHTMLImgElement *iface, LONG *p)
{
HTMLImgElement *This = HTMLIMG_THIS(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
PRInt32 height;
nsresult nsres;
TRACE("(%p)->(%p)\n", This, p);
nsres = nsIDOMHTMLImageElement_GetHeight(This->nsimg, &height);
if(NS_FAILED(nsres)) {
ERR("GetHeight failed: %08x\n", nsres);
return E_FAIL;
}
*p = height;
return S_OK;
}
static HRESULT WINAPI HTMLImgElement_put_start(IHTMLImgElement *iface, BSTR v)
@ -609,11 +649,7 @@ static const NodeImplVtbl HTMLImgElementImplVtbl = {
};
static const tid_t HTMLImgElement_iface_tids[] = {
IHTMLDOMNode_tid,
IHTMLDOMNode2_tid,
IHTMLElement_tid,
IHTMLElement2_tid,
IHTMLElement3_tid,
HTMLELEMENT_TIDS,
IHTMLImgElement_tid,
0
};
@ -728,12 +764,38 @@ static HRESULT WINAPI HTMLImageElementFactory_Invoke(IHTMLImageElementFactory *i
return E_NOTIMPL;
}
static LONG var_to_size(const VARIANT *v)
{
switch(V_VT(v)) {
case VT_EMPTY:
return 0;
case VT_I4:
return V_I4(v);
case VT_BSTR: {
LONG ret;
HRESULT hres;
hres = VarI4FromStr(V_BSTR(v), 0, 0, &ret);
if(FAILED(hres)) {
FIXME("VarI4FromStr failed: %08x\n", hres);
return 0;
}
return ret;
}
default:
FIXME("unsupported size %s\n", debugstr_variant(v));
}
return 0;
}
static HRESULT WINAPI HTMLImageElementFactory_create(IHTMLImageElementFactory *iface,
VARIANT width, VARIANT height, IHTMLImgElement **img_elem)
{
HTMLImageElementFactory *This = HTMLIMGFACTORY_THIS(iface);
IHTMLImgElement *img;
HTMLElement *elem;
nsIDOMHTMLElement *nselem;
LONG l;
HRESULT hres;
static const PRUnichar imgW[] = {'I','M','G',0};
@ -758,7 +820,7 @@ static HRESULT WINAPI HTMLImageElementFactory_create(IHTMLImageElementFactory *i
return E_FAIL;
}
hres = IHTMLElement_QueryInterface(HTMLELEM(elem), &IID_IHTMLImgElement, (void**)img_elem);
hres = IHTMLElement_QueryInterface(HTMLELEM(elem), &IID_IHTMLImgElement, (void**)&img);
if(FAILED(hres)) {
ERR("IHTMLElement_QueryInterface failed: 0x%08x\n", hres);
return hres;
@ -766,9 +828,14 @@ static HRESULT WINAPI HTMLImageElementFactory_create(IHTMLImageElementFactory *i
nsIDOMHTMLElement_Release(nselem);
if(V_VT(&width) != VT_EMPTY || V_VT(&height) != VT_EMPTY)
FIXME("Not setting image dimensions\n");
l = var_to_size(&width);
if(l)
IHTMLImgElement_put_width(img, l);
l = var_to_size(&height);
if(l)
IHTMLImgElement_put_height(img, l);
*img_elem = img;
return S_OK;
}

View file

@ -143,7 +143,7 @@ static HRESULT WINAPI HTMLInputElement_put_value(IHTMLInputElement *iface, BSTR
TRACE("(%p)->(%s)\n", This, debugstr_w(v));
nsAString_Init(&val_str, v);
nsAString_InitDepend(&val_str, v);
nsres = nsIDOMHTMLInputElement_SetValue(This->nsinput, &val_str);
nsAString_Finish(&val_str);
if(NS_FAILED(nsres))
@ -512,7 +512,7 @@ static HRESULT WINAPI HTMLInputElement_put_src(IHTMLInputElement *iface, BSTR v)
TRACE("(%p)->(%s)\n", This, debugstr_w(v));
nsAString_Init(&nsstr, v);
nsAString_InitDepend(&nsstr, v);
nsres = nsIDOMHTMLInputElement_SetSrc(This->nsinput, &nsstr);
nsAString_Finish(&nsstr);
if(NS_FAILED(nsres))
@ -1173,11 +1173,7 @@ static const NodeImplVtbl HTMLInputElementImplVtbl = {
};
static const tid_t HTMLInputElement_iface_tids[] = {
IHTMLDOMNode_tid,
IHTMLDOMNode2_tid,
IHTMLElement_tid,
IHTMLElement2_tid,
IHTMLElement3_tid,
HTMLELEMENT_TIDS,
IHTMLInputElement_tid,
0
};

View file

@ -645,7 +645,7 @@ static HRESULT WINAPI HTMLDOMNode_put_nodeValue(IHTMLDOMNode *iface, VARIANT v)
TRACE("bstr %s\n", debugstr_w(V_BSTR(&v)));
nsAString_Init(&val_str, V_BSTR(&v));
nsAString_InitDepend(&val_str, V_BSTR(&v));
nsIDOMNode_SetNodeValue(This->nsnode, &val_str);
nsAString_Finish(&val_str);

View file

@ -117,7 +117,7 @@ static HRESULT WINAPI HTMLOptionElement_put_value(IHTMLOptionElement *iface, BST
TRACE("(%p)->(%s)\n", This, debugstr_w(v));
nsAString_Init(&value_str, v);
nsAString_InitDepend(&value_str, v);
nsres = nsIDOMHTMLOptionElement_SetValue(This->nsoption, &value_str);
nsAString_Finish(&value_str);
if(NS_FAILED(nsres))
@ -209,7 +209,7 @@ static HRESULT WINAPI HTMLOptionElement_put_text(IHTMLOptionElement *iface, BSTR
}
}
nsAString_Init(&text_str, v);
nsAString_InitDepend(&text_str, v);
nsres = nsIDOMHTMLDocument_CreateTextNode(This->element.node.doc->nsdoc, &text_str, &text_node);
nsAString_Finish(&text_str);
if(NS_FAILED(nsres)) {
@ -324,11 +324,7 @@ static const NodeImplVtbl HTMLOptionElementImplVtbl = {
};
static const tid_t HTMLOptionElement_iface_tids[] = {
IHTMLDOMNode_tid,
IHTMLDOMNode2_tid,
IHTMLElement_tid,
IHTMLElement2_tid,
IHTMLElement3_tid,
HTMLELEMENT_TIDS,
IHTMLOptionElement_tid,
0
};

View file

@ -319,6 +319,19 @@ static const NodeImplVtbl HTMLScriptElementImplVtbl = {
HTMLScriptElement_get_readystate
};
static const tid_t HTMLScriptElement_iface_tids[] = {
HTMLELEMENT_TIDS,
IHTMLScriptElement_tid,
0
};
static dispex_static_data_t HTMLScriptElement_dispex = {
NULL,
DispHTMLScriptElement_tid,
NULL,
HTMLScriptElement_iface_tids
};
HTMLElement *HTMLScriptElement_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem)
{
HTMLScriptElement *ret = heap_alloc_zero(sizeof(HTMLScriptElement));
@ -327,7 +340,7 @@ HTMLElement *HTMLScriptElement_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *
ret->lpHTMLScriptElementVtbl = &HTMLScriptElementVtbl;
ret->element.node.vtbl = &HTMLScriptElementImplVtbl;
HTMLElement_Init(&ret->element, doc, nselem, NULL);
HTMLElement_Init(&ret->element, doc, nselem, &HTMLScriptElement_dispex);
nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLScriptElement, (void**)&ret->nsscript);
if(NS_FAILED(nsres))

View file

@ -253,7 +253,7 @@ static HRESULT WINAPI HTMLSelectElement_put_value(IHTMLSelectElement *iface, BST
TRACE("(%p)->(%s)\n", This, debugstr_w(v));
nsAString_Init(&value_str, v);
nsAString_InitDepend(&value_str, v);
nsres = nsIDOMHTMLSelectElement_SetValue(This->nsselect, &value_str);
nsAString_Finish(&value_str);
if(NS_FAILED(nsres))
@ -332,8 +332,26 @@ static HRESULT WINAPI HTMLSelectElement_add(IHTMLSelectElement *iface, IHTMLElem
VARIANT before)
{
HTMLSelectElement *This = HTMLSELECT_THIS(iface);
FIXME("(%p)->(%p v)\n", This, element);
return E_NOTIMPL;
IHTMLDOMNode *node, *tmp;
HRESULT hres;
FIXME("(%p)->(%p %s): semi-stub\n", This, element, debugstr_variant(&before));
if(V_VT(&before) != VT_EMPTY) {
FIXME("unhandled before %s\n", debugstr_variant(&before));
return E_NOTIMPL;
}
hres = IHTMLElement_QueryInterface(element, &IID_IHTMLDOMNode, (void**)&node);
if(FAILED(hres))
return hres;
hres = IHTMLDOMNode_appendChild(HTMLDOMNODE(&This->element.node), node, &tmp);
IHTMLDOMNode_Release(node);
if(SUCCEEDED(hres) && tmp)
IHTMLDOMNode_Release(tmp);
return hres;
}
static HRESULT WINAPI HTMLSelectElement_remove(IHTMLSelectElement *iface, LONG index)
@ -487,11 +505,7 @@ static const NodeImplVtbl HTMLSelectElementImplVtbl = {
};
static const tid_t HTMLSelectElement_tids[] = {
IHTMLDOMNode_tid,
IHTMLDOMNode2_tid,
IHTMLElement_tid,
IHTMLElement2_tid,
IHTMLElement3_tid,
HTMLELEMENT_TIDS,
IHTMLSelectElement_tid,
0
};

View file

@ -315,9 +315,9 @@ HRESULT set_nsstyle_attr(nsIDOMCSSStyleDeclaration *nsstyle, styleid_t sid, LPCW
if(flags & ATTR_FIX_URL)
val = fix_url_value(value);
nsAString_Init(&str_name, style_tbl[sid].name);
nsAString_Init(&str_value, val ? val : value);
nsAString_Init(&str_empty, wszEmpty);
nsAString_InitDepend(&str_name, style_tbl[sid].name);
nsAString_InitDepend(&str_value, val ? val : value);
nsAString_InitDepend(&str_empty, wszEmpty);
heap_free(val);
nsres = nsIDOMCSSStyleDeclaration_SetProperty(nsstyle, &str_name, &str_value, &str_empty);
@ -345,10 +345,12 @@ HRESULT set_nsstyle_attr_var(nsIDOMCSSStyleDeclaration *nsstyle, styleid_t sid,
case VT_I4: {
WCHAR str[14];
static const WCHAR format[] = {'%','d',0};
wsprintfW(str, format, V_I4(value));
return set_nsstyle_attr(nsstyle, sid, str, flags);
static const WCHAR format[] = {'%','d',0};
static const WCHAR px_format[] = {'%','d','p','x',0};
wsprintfW(str, flags&ATTR_FIX_PX ? px_format : format, V_I4(value));
return set_nsstyle_attr(nsstyle, sid, str, flags & ~ATTR_FIX_PX);
}
default:
FIXME("not implemented vt %d\n", V_VT(value));
@ -369,7 +371,7 @@ static HRESULT get_nsstyle_attr_nsval(nsIDOMCSSStyleDeclaration *nsstyle, stylei
nsAString str_name;
nsresult nsres;
nsAString_Init(&str_name, style_tbl[sid].name);
nsAString_InitDepend(&str_name, style_tbl[sid].name);
nsres = nsIDOMCSSStyleDeclaration_GetPropertyValue(nsstyle, &str_name, value);
if(NS_FAILED(nsres)) {
@ -1531,8 +1533,10 @@ static HRESULT WINAPI HTMLStyle_put_borderTopColor(IHTMLStyle *iface, VARIANT v)
static HRESULT WINAPI HTMLStyle_get_borderTopColor(IHTMLStyle *iface, VARIANT *p)
{
HTMLStyle *This = HTMLSTYLE_THIS(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
TRACE("(%p)->(%p)\n", This, p);
return get_nsstyle_attr_var(This->nsstyle, STYLEID_BORDER_TOP_COLOR, p, 0);
}
static HRESULT WINAPI HTMLStyle_put_borderRightColor(IHTMLStyle *iface, VARIANT v)
@ -1545,8 +1549,10 @@ static HRESULT WINAPI HTMLStyle_put_borderRightColor(IHTMLStyle *iface, VARIANT
static HRESULT WINAPI HTMLStyle_get_borderRightColor(IHTMLStyle *iface, VARIANT *p)
{
HTMLStyle *This = HTMLSTYLE_THIS(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
TRACE("(%p)->(%p)\n", This, p);
return get_nsstyle_attr_var(This->nsstyle, STYLEID_BORDER_RIGHT_COLOR, p, 0);
}
static HRESULT WINAPI HTMLStyle_put_borderBottomColor(IHTMLStyle *iface, VARIANT v)
@ -1559,8 +1565,10 @@ static HRESULT WINAPI HTMLStyle_put_borderBottomColor(IHTMLStyle *iface, VARIANT
static HRESULT WINAPI HTMLStyle_get_borderBottomColor(IHTMLStyle *iface, VARIANT *p)
{
HTMLStyle *This = HTMLSTYLE_THIS(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
TRACE("(%p)->(%p)\n", This, p);
return get_nsstyle_attr_var(This->nsstyle, STYLEID_BORDER_BOTTOM_COLOR, p, 0);
}
static HRESULT WINAPI HTMLStyle_put_borderLeftColor(IHTMLStyle *iface, VARIANT v)
@ -1573,8 +1581,10 @@ static HRESULT WINAPI HTMLStyle_put_borderLeftColor(IHTMLStyle *iface, VARIANT v
static HRESULT WINAPI HTMLStyle_get_borderLeftColor(IHTMLStyle *iface, VARIANT *p)
{
HTMLStyle *This = HTMLSTYLE_THIS(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
TRACE("(%p)->(%p)\n", This, p);
return get_nsstyle_attr_var(This->nsstyle, STYLEID_BORDER_LEFT_COLOR, p, 0);
}
static HRESULT WINAPI HTMLStyle_put_borderWidth(IHTMLStyle *iface, BSTR v)
@ -1779,15 +1789,7 @@ static HRESULT WINAPI HTMLStyle_put_width(IHTMLStyle *iface, VARIANT v)
TRACE("(%p)->(v%d)\n", This, V_VT(&v));
switch(V_VT(&v)) {
case VT_BSTR:
TRACE("%s\n", debugstr_w(V_BSTR(&v)));
return set_style_attr(This, STYLEID_WIDTH, V_BSTR(&v), 0);
default:
FIXME("unsupported vt %d\n", V_VT(&v));
}
return E_NOTIMPL;
return set_nsstyle_attr_var(This->nsstyle, STYLEID_WIDTH, &v, ATTR_FIX_PX);
}
static HRESULT WINAPI HTMLStyle_get_width(IHTMLStyle *iface, VARIANT *p)
@ -2129,7 +2131,7 @@ static HRESULT WINAPI HTMLStyle_put_cssText(IHTMLStyle *iface, BSTR v)
TRACE("(%p)->(%s)\n", This, debugstr_w(v));
nsAString_Init(&text_str, v);
nsAString_InitDepend(&text_str, v);
nsres = nsIDOMCSSStyleDeclaration_SetCssText(This->nsstyle, &text_str);
nsAString_Finish(&text_str);
if(NS_FAILED(nsres)) {

View file

@ -558,11 +558,7 @@ static const NodeImplVtbl HTMLTableImplVtbl = {
};
static const tid_t HTMLTable_iface_tids[] = {
IHTMLDOMNode_tid,
IHTMLDOMNode2_tid,
IHTMLElement_tid,
IHTMLElement2_tid,
IHTMLElement3_tid,
HTMLELEMENT_TIDS,
IHTMLTable_tid,
0
};

View file

@ -301,11 +301,7 @@ static const NodeImplVtbl HTMLTableRowImplVtbl = {
};
static const tid_t HTMLTableRow_iface_tids[] = {
IHTMLDOMNode_tid,
IHTMLDOMNode2_tid,
IHTMLElement_tid,
IHTMLElement2_tid,
IHTMLElement3_tid,
HTMLELEMENT_TIDS,
IHTMLTableRow_tid,
0
};

View file

@ -411,6 +411,19 @@ static const NodeImplVtbl HTMLTextAreaElementImplVtbl = {
HTMLTextAreaElementImpl_get_disabled
};
static const tid_t HTMLTextAreaElement_iface_tids[] = {
HTMLELEMENT_TIDS,
IHTMLTextAreaElement_tid,
0
};
static dispex_static_data_t HTMLTextAreaElement_dispex = {
NULL,
DispHTMLTextAreaElement_tid,
NULL,
HTMLTextAreaElement_iface_tids
};
HTMLElement *HTMLTextAreaElement_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem)
{
HTMLTextAreaElement *ret = heap_alloc_zero(sizeof(HTMLTextAreaElement));
@ -419,7 +432,7 @@ HTMLElement *HTMLTextAreaElement_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement
ret->lpHTMLTextAreaElementVtbl = &HTMLTextAreaElementVtbl;
ret->element.node.vtbl = &HTMLTextAreaElementImplVtbl;
HTMLElement_Init(&ret->element, doc, nselem, NULL);
HTMLElement_Init(&ret->element, doc, nselem, &HTMLTextAreaElement_dispex);
nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLTextAreaElement,
(void**)&ret->nstextarea);

View file

@ -694,7 +694,7 @@ static HRESULT WINAPI HTMLWindow2_put_name(IHTMLWindow2 *iface, BSTR v)
TRACE("(%p)->(%s)\n", This, debugstr_w(v));
nsAString_Init(&name_str, v);
nsAString_InitDepend(&name_str, v);
nsres = nsIDOMWindow_SetName(This->nswindow, &name_str);
nsAString_Finish(&name_str);
if(NS_FAILED(nsres))
@ -1688,13 +1688,20 @@ static HRESULT WINAPI WindowDispEx_GetIDsOfNames(IDispatchEx *iface, REFIID riid
LCID lcid, DISPID *rgDispId)
{
HTMLWindow *This = DISPEX_THIS(iface);
UINT i;
HRESULT hres;
TRACE("(%p)->(%s %p %u %u %p)\n", This, debugstr_guid(riid), rgszNames, cNames,
WARN("(%p)->(%s %p %u %u %p)\n", This, debugstr_guid(riid), rgszNames, cNames,
lcid, rgDispId);
/* FIXME: Use script dispatch */
for(i=0; i < cNames; i++) {
/* We shouldn't use script's IDispatchEx here, so we shouldn't use GetDispID */
hres = IDispatchEx_GetDispID(DISPATCHEX(This), rgszNames[i], 0, rgDispId+i);
if(FAILED(hres))
return hres;
}
return IDispatchEx_GetIDsOfNames(DISPATCHEX(&This->dispex), riid, rgszNames, cNames, lcid, rgDispId);
return S_OK;
}
static HRESULT WINAPI WindowDispEx_Invoke(IDispatchEx *iface, DISPID dispIdMember,

View file

@ -439,11 +439,14 @@ HRESULT WINAPI DllUnregisterServer(void)
const char *debugstr_variant(const VARIANT *v)
{
if(!v)
return "(null)";
switch(V_VT(v)) {
case VT_EMPTY:
return wine_dbg_sprintf("{VT_EMPTY}");
return "{VT_EMPTY}";
case VT_NULL:
return wine_dbg_sprintf("{VT_NULL}");
return "{VT_NULL}";
case VT_I4:
return wine_dbg_sprintf("{VT_I4: %d}", V_I4(v));
case VT_R8:

View file

@ -90,7 +90,7 @@ HKCR,"CLSID\%CLSID_CRecalcEngine%\InProcServer32","ThreadingModel",,"Apartment"
;; CrSource
HKCR,"CLSID\%CLSID_CrSource%",,,"Microsoft CrSource 4.0"
HKCR,"CLSID\%CLSID_CrSource%\BrowseInPlace",,,""
HKCR,"CLSID\%CLSID_CrSource%\BrowseInPlace",,16
;; HKCR,"CLSID\%CLSID_CrSource%\DefaultIcon",,0x00020000,"%IEXPLORE%,1"
HKCR,"CLSID\%CLSID_CrSource%\EnablePlugin\.css",,,"PointPlus plugin"
HKCR,"CLSID\%CLSID_CrSource%\InProcServer32",,,"mshtml.dll"
@ -113,7 +113,7 @@ HKCR,"ScriptBridge.ScriptBridge.1\CLSID",,,"%CLSID_Scriptlet%"
;; HTADocument
HKCR,"CLSID\%CLSID_HTADocument%",,,"Microsoft HTA Document 6.0"
HKCR,"CLSID\%CLSID_HTADocument%\BrowseInPlace",,,""
HKCR,"CLSID\%CLSID_HTADocument%\BrowseInPlace",,16
HKCR,"CLSID\%CLSID_HTADocument%\InProcServer32",,,"mshtml.dll"
HKCR,"CLSID\%CLSID_HTADocument%\InProcServer32","ThreadingModel",,"Apartment"
HKCR,"CLSID\%CLSID_HTADocument%\MiscStatus",,,"2228625"
@ -121,7 +121,7 @@ HKCR,"CLSID\%CLSID_HTADocument%\Version",,,"6.0"
;; HTMLDocument
HKCR,"CLSID\%CLSID_HTMLDocument%",,,"HTML Document"
HKCR,"CLSID\%CLSID_HTMLDocument%\BrowseInPlace",,,""
HKCR,"CLSID\%CLSID_HTMLDocument%\BrowseInPlace",,16
;; HKCR,"CLSID\%CLSID_HTMLDocument%\DefaultIcon",,0x00020000,"%IEXPLORE%,1"
HKCR,"CLSID\%CLSID_HTMLDocument%\InProcServer32",,,"mshtml.dll"
HKCR,"CLSID\%CLSID_HTMLDocument%\InProcServer32","ThreadingModel",,"Apartment"
@ -132,7 +132,7 @@ HKCR,"CLSID\%CLSID_HTMLDocument%\EnablePlugin\.css",,,"PointPlus plugin"
;; HTMLPluginDocument
HKCR,"CLSID\%CLSID_HTMLPluginDocument%",,,"Microsoft HTML Document 6.0"
HKCR,"CLSID\%CLSID_HTMLPluginDocument%\BrowseInPlace",,,""
HKCR,"CLSID\%CLSID_HTMLPluginDocument%\BrowseInPlace",,16
HKCR,"CLSID\%CLSID_HTMLPluginDocument%\InProcServer32",,,"mshtml.dll"
HKCR,"CLSID\%CLSID_HTMLPluginDocument%\InProcServer32","ThreadingModel",,"Apartment"
HKCR,"CLSID\%CLSID_HTMLPluginDocument%\MiscStatus",,,"0"
@ -159,7 +159,7 @@ HKCR,"CLSID\%CLSID_HTMLWindowProxy%\InProcServer32",,,"mshtml.dll"
HKCR,"CLSID\%CLSID_HTMLWindowProxy%\InProcServer32","ThreadingModel",,"Apartment"
;; IImageDecodeFilter
HKCR,"CLSID\%CLSID_IImageDecodeFilter%",,,""
HKCR,"CLSID\%CLSID_IImageDecodeFilter%",,,"CoICOFilter Class"
HKCR,"CLSID\%CLSID_IImageDecodeFilter%\InProcServer32",,,%_MOD_PATH%
HKCR,"CLSID\%CLSID_IImageDecodeFilter%\InProcServer32","ThreadingModel",,"Apartment"
HKCR,"MIME\Database\Content Type\image/x-wmf","Image Filter CLSID",,"%CLSID_IImageDecodeFilter%"
@ -214,7 +214,7 @@ HKCR,"CLSID\%CLSID_MailtoProtocol%\InProcServer32","ThreadingModel",,"Apartment"
;; MHTMLDocument
HKCR,"CLSID\%CLSID_MHTMLDocument%",,,"MHTML Document"
HKCR,"CLSID\%CLSID_MHTMLDocument%\BrowseInPlace",,,""
HKCR,"CLSID\%CLSID_MHTMLDocument%\BrowseInPlace",,16
;; HKCR,"CLSID\%CLSID_MHTMLDocument%\DefaultIcon",,0x00020000,"%IEXPLORE%,1"
HKCR,"CLSID\%CLSID_MHTMLDocument%\InProcServer32",,,"mshtml.dll"
HKCR,"CLSID\%CLSID_MHTMLDocument%\InProcServer32","ThreadingModel",,"Apartment"
@ -229,13 +229,13 @@ HKCR,"CLSID\%CLSID_ResProtocol%\InProcServer32","ThreadingModel",,"Apartment"
;; Scriptlet
HKCR,"CLSID\%CLSID_Scriptlet%",,,"Microsoft Scriptlet Component"
HKCR,"CLSID\%CLSID_Scriptlet%\Control"
HKCR,"CLSID\%CLSID_Scriptlet%\Control",,16
HKCR,"CLSID\%CLSID_Scriptlet%\InProcServer32",,,"%_MOD_PATH%"
HKCR,"CLSID\%CLSID_Scriptlet%\InProcServer32","ThreadingModel",,"Apartment"
HKCR,"CLSID\%CLSID_Scriptlet%\MiscStatus",,,"0"
HKCR,"CLSID\%CLSID_Scriptlet%\MiscStatus\1",,,"131473"
HKCR,"CLSID\%CLSID_Scriptlet%\ProgID",,,"ScriptBridge.ScriptBridge.1"
HKCR,"CLSID\%CLSID_Scriptlet%\Programmable"
HKCR,"CLSID\%CLSID_Scriptlet%\Programmable",,16
;; HKCR,"CLSID\%CLSID_Scriptlet%\ToolboxBitmap32",,,"%IEXPLORE%,1"
HKCR,"CLSID\%CLSID_Scriptlet%\TypeLib",,,"%LIBID_MSHTML%"
HKCR,"CLSID\%CLSID_Scriptlet%\Version",,,"4.0"
@ -337,11 +337,11 @@ HKCR,"InternetShortcut\shell\printto\command",,,"rundll32.exe mshtml.dll,PrintHT
HKCR,"htmlfile\shell\print\command",,,"rundll32.exe mshtml.dll,PrintHTML ""%%1"""
HKCR,"htmlfile\shell\printto\command",,,"rundll32.exe mshtml.dll,PrintHTML ""%%1"" ""%%2"" ""%%3"" ""%%4"""
HKCR,"htmlfile",,,"HTML Document"
HKCR,"htmlfile\BrowseInPlace",,,""
HKCR,"htmlfile\BrowseInPlace",,16
HKCR,"htmlfile\CLSID",,,"%CLSID_HTMLDocument%"
;; HKCR,"htmlfile\DefaultIcon",,0x00020000,"%IEXPLORE%,1"
HKCR,"htmlfile_FullWindowEmbed",,,"HTML Plugin Document"
HKCR,"htmlfile_FullWindowEmbed\BrowseInPlace",,,""
HKCR,"htmlfile_FullWindowEmbed\BrowseInPlace",,16
HKCR,"htmlfile_FullWindowEmbed\CLSID",,,"%CLSID_HTMLPluginDocument%"
HKCR,".htm",,,"htmlfile"
HKCR,".htm","Content Type",,"text/html"
@ -398,7 +398,7 @@ HKCR,".mhtml","Content Type",,"message/rfc822"
HKCR,".mht",,2,"mhtmlfile"
HKCR,".mht","Content Type",,"message/rfc822"
HKCR,"mhtmlfile",,,"MHTML Document"
HKCR,"mhtmlfile\BrowseInPlace",,,""
HKCR,"mhtmlfile\BrowseInPlace",,16
HKCR,"mhtmlfile\CLSID",,,"%CLSID_MHTMLDocument%"
;; MPEG

View file

@ -30,6 +30,7 @@
<file>htmlelemcol.c</file>
<file>htmlevent.c</file>
<file>htmlform.c</file>
<file>htmlframe.c</file>
<file>htmlframebase.c</file>
<file>htmlgeneric.c</file>
<file>htmliframe.c</file>

View file

@ -68,6 +68,7 @@ typedef enum {
DispHTMLElementCollection_tid,
DispHTMLFormElement_tid,
DispHTMLGenericElement_tid,
DispHTMLFrameElement_tid,
DispHTMLIFrame_tid,
DispHTMLImg_tid,
DispHTMLInputElement_tid,
@ -75,10 +76,12 @@ typedef enum {
DispHTMLNavigator_tid,
DispHTMLOptionElement_tid,
DispHTMLScreen_tid,
DispHTMLScriptElement_tid,
DispHTMLSelectElement_tid,
DispHTMLStyle_tid,
DispHTMLTable_tid,
DispHTMLTableRow_tid,
DispHTMLTextAreaElement_tid,
DispHTMLUnknownElement_tid,
DispHTMLWindow2_tid,
HTMLDocumentEvents_tid,
@ -108,13 +111,16 @@ typedef enum {
IHTMLFormElement_tid,
IHTMLFrameBase_tid,
IHTMLFrameBase2_tid,
IHTMLFrameElement3_tid,
IHTMLGenericElement_tid,
IHTMLIFrameElement_tid,
IHTMLImageElementFactory_tid,
IHTMLImgElement_tid,
IHTMLInputElement_tid,
IHTMLLocation_tid,
IHTMLOptionElement_tid,
IHTMLScreen_tid,
IHTMLScriptElement_tid,
IHTMLSelectElement_tid,
IHTMLStyle_tid,
IHTMLStyle2_tid,
@ -122,6 +128,7 @@ typedef enum {
IHTMLStyle4_tid,
IHTMLTable_tid,
IHTMLTableRow_tid,
IHTMLTextAreaElement_tid,
IHTMLTextContainer_tid,
IHTMLUniqueName_tid,
IHTMLWindow2_tid,
@ -373,6 +380,7 @@ struct HTMLDocumentObj {
IOleInPlaceSite *ipsite;
IOleInPlaceFrame *frame;
IOleInPlaceUIWindow *ip_window;
IAdviseSink *view_sink;
DOCHOSTUIINFO hostinfo;
@ -487,6 +495,14 @@ typedef struct {
nsIDOMHTMLElement *nselem;
} HTMLElement;
#define HTMLELEMENT_TIDS \
IHTMLDOMNode_tid, \
IHTMLDOMNode2_tid, \
IHTMLElement_tid, \
IHTMLElement2_tid, \
IHTMLElement3_tid, \
IHTMLElement4_tid
typedef struct {
HTMLElement element;
@ -696,7 +712,8 @@ void nsfree(void*);
void nsACString_SetData(nsACString*,const char*);
PRUint32 nsACString_GetData(const nsACString*,const char**);
void nsAString_Init(nsAString*,const PRUnichar*);
BOOL nsAString_Init(nsAString*,const PRUnichar*);
void nsAString_InitDepend(nsAString*,const PRUnichar*);
void nsAString_SetData(nsAString*,const PRUnichar*);
PRUint32 nsAString_GetData(const nsAString*,const PRUnichar**);
void nsAString_Finish(nsAString*);

View file

@ -168,12 +168,12 @@ static BOOL handle_insert_comment(HTMLDocumentNode *doc, const PRUnichar *commen
memcpy(buf, ptr, (end-ptr)*sizeof(WCHAR));
buf[end-ptr] = 0;
nsAString_Init(&nsstr, buf);
heap_free(buf);
nsAString_InitDepend(&nsstr, buf);
/* FIXME: Find better way to insert HTML to document. */
nsres = nsIDOMHTMLDocument_Write(doc->nsdoc, &nsstr);
nsAString_Finish(&nsstr);
heap_free(buf);
if(NS_FAILED(nsres)) {
ERR("Write failed: %08x\n", nsres);
return FALSE;
@ -322,6 +322,8 @@ static void parse_complete_proc(task_t *task)
init_editor(&doc->basedoc);
call_explorer_69(doc);
if(doc->view_sink)
IAdviseSink_OnViewChange(doc->view_sink, DVASPECT_CONTENT, -1);
call_property_onchanged(&doc->basedoc.cp_propnotif, 1005);
call_explorer_69(doc);
@ -396,7 +398,7 @@ static nsresult NSAPI nsRunnable_Run(nsIRunnable *iface)
static const PRUnichar remove_comment_magicW[] =
{'#','!','w','i','n','e', 'r','e','m','o','v','e','!','#',0};
nsAString_Init(&magic_str, remove_comment_magicW);
nsAString_InitDepend(&magic_str, remove_comment_magicW);
nsres = nsIDOMComment_SetData(nscomment, &magic_str);
nsAString_Finish(&magic_str);
if(NS_FAILED(nsres))

View file

@ -52,13 +52,15 @@ struct nsCStringContainer {
void *v;
void *d1;
PRUint32 d2;
void *d3;
PRUint32 d3;
};
#define NS_STRING_CONTAINER_INIT_DEPEND 0x0002
static nsresult (*NS_InitXPCOM2)(nsIServiceManager**,void*,void*);
static nsresult (*NS_ShutdownXPCOM)(nsIServiceManager*);
static nsresult (*NS_GetComponentRegistrar)(nsIComponentRegistrar**);
static nsresult (*NS_StringContainerInit)(nsStringContainer*);
static nsresult (*NS_StringContainerInit2)(nsStringContainer*,const PRUnichar*,PRUint32,PRUint32);
static nsresult (*NS_CStringContainerInit)(nsCStringContainer*);
static nsresult (*NS_StringContainerFinish)(nsStringContainer*);
static nsresult (*NS_CStringContainerFinish)(nsCStringContainer*);
@ -194,7 +196,7 @@ static BOOL load_xpcom(const PRUnichar *gre_path)
NS_DLSYM(NS_InitXPCOM2);
NS_DLSYM(NS_ShutdownXPCOM);
NS_DLSYM(NS_GetComponentRegistrar);
NS_DLSYM(NS_StringContainerInit);
NS_DLSYM(NS_StringContainerInit2);
NS_DLSYM(NS_CStringContainerInit);
NS_DLSYM(NS_StringContainerFinish);
NS_DLSYM(NS_CStringContainerFinish);
@ -424,7 +426,7 @@ static BOOL init_xpcom(const PRUnichar *gre_path)
nsAString path;
nsIFile *gre_dir;
nsAString_Init(&path, gre_path);
nsAString_InitDepend(&path, gre_path);
nsres = NS_NewLocalFile(&path, FALSE, &gre_dir);
nsAString_Finish(&path);
if(NS_FAILED(nsres)) {
@ -555,11 +557,18 @@ static void nsACString_Finish(nsACString *str)
NS_CStringContainerFinish(str);
}
void nsAString_Init(nsAString *str, const PRUnichar *data)
BOOL nsAString_Init(nsAString *str, const PRUnichar *data)
{
NS_StringContainerInit(str);
if(data)
nsAString_SetData(str, data);
return NS_SUCCEEDED(NS_StringContainerInit2(str, data, PR_UINT32_MAX, 0));
}
/*
* Initializes nsAString with data owned by caller.
* Caller must ensure that data is valid during lifetime of string object.
*/
void nsAString_InitDepend(nsAString *str, const PRUnichar *data)
{
NS_StringContainerInit2(str, data, PR_UINT32_MAX, NS_STRING_CONTAINER_INIT_DEPEND);
}
void nsAString_SetData(nsAString *str, const PRUnichar *data)

View file

@ -236,6 +236,9 @@ static nsresult NSAPI handle_load(nsIDOMEventListener *iface, nsIDOMEvent *event
set_ready_state(doc->basedoc.window, READYSTATE_COMPLETE);
if(doc == doc_obj->basedoc.doc_node) {
if(doc_obj->view_sink)
IAdviseSink_OnViewChange(doc_obj->view_sink, DVASPECT_CONTENT, -1);
if(doc_obj->frame) {
static const WCHAR wszDone[] = {'D','o','n','e',0};
IOleInPlaceFrame_SetStatusText(doc_obj->frame, wszDone);
@ -316,7 +319,7 @@ static void init_event(nsIDOMEventTarget *target, const PRUnichar *type,
nsAString type_str;
nsresult nsres;
nsAString_Init(&type_str, type);
nsAString_InitDepend(&type_str, type);
nsres = nsIDOMEventTarget_AddEventListener(target, &type_str, listener, capture);
nsAString_Finish(&type_str);
if(NS_FAILED(nsres))

View file

@ -438,7 +438,7 @@ static nsresult NSAPI nsChannel_GetSecurityInfo(nsIHttpChannel *iface, nsISuppor
{
nsChannel *This = NSCHANNEL_THIS(iface);
FIXME("(%p)->(%p)\n", This, aSecurityInfo);
TRACE("(%p)->(%p)\n", This, aSecurityInfo);
return NS_ERROR_NOT_IMPLEMENTED;
}

View file

@ -16,6 +16,13 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "windef.h"
#include "winuser.h"
#include "commctrl.h"
#include "mshtmcid.h"
#include "resource.h"
#define WINE_OLESELFREGISTER
#define WINE_FILEDESCRIPTION_STR "Wine HTML Viewer"
#define WINE_FILENAME_STR "mshtml.dll"
@ -26,6 +33,32 @@
#include "wine/wine_common_ver.rc"
#include "Bg.rc"
#include "Da.rc"
#include "De.rc"
#include "En.rc"
#include "Es.rc"
#include "Fi.rc"
#include "Fr.rc"
#include "Hu.rc"
#include "It.rc"
#include "Ja.rc"
#include "Ko.rc"
#include "Lt.rc"
#include "Nl.rc"
#include "No.rc"
#include "Pl.rc"
#include "Pt.rc"
#include "Ro.rc"
#include "Ru.rc"
#include "Si.rc"
#include "Sv.rc"
#include "Tr.rc"
#include "Uk.rc"
#include "Zh.rc"
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
/* @makedep: mshtml.inf */
REGINST REGINST mshtml.inf

View file

@ -758,9 +758,9 @@ static BOOL get_script_guid(nsIDOMHTMLScriptElement *nsscript, GUID *guid)
ERR("GetType failed: %08x\n", nsres);
}
nsAString_Init(&attr_str, languageW);
nsAString_InitDepend(&attr_str, languageW);
nsres = nsIDOMHTMLScriptElement_GetAttribute(nsscript, &attr_str, &val_str);
nsAString_Finish(&attr_str);
if(NS_SUCCEEDED(nsres)) {
const PRUnichar *language;
@ -776,7 +776,6 @@ static BOOL get_script_guid(nsIDOMHTMLScriptElement *nsscript, GUID *guid)
ERR("GetAttribute(language) failed: %08x\n", nsres);
}
nsAString_Finish(&attr_str);
nsAString_Finish(&val_str);
return ret;

View file

@ -1141,7 +1141,7 @@ static HRESULT WINAPI HTMLTxtRange_put_text(IHTMLTxtRange *iface, BSTR v)
if(!This->doc)
return MSHTML_E_NODOC;
nsAString_Init(&text_str, v);
nsAString_InitDepend(&text_str, v);
nsres = nsIDOMHTMLDocument_CreateTextNode(This->doc->nsdoc, &text_str, &text_node);
nsAString_Finish(&text_str);
if(NS_FAILED(nsres)) {

View file

@ -807,8 +807,19 @@ static HRESULT WINAPI ViewObject_Unfreeze(IViewObjectEx *iface, DWORD dwFreeze)
static HRESULT WINAPI ViewObject_SetAdvise(IViewObjectEx *iface, DWORD aspects, DWORD advf, IAdviseSink *pAdvSink)
{
HTMLDocument *This = VIEWOBJ_THIS(iface);
FIXME("(%p)->(%d %d %p)\n", This, aspects, advf, pAdvSink);
return E_NOTIMPL;
TRACE("(%p)->(%d %d %p)\n", This, aspects, advf, pAdvSink);
if(aspects != DVASPECT_CONTENT || advf != ADVF_PRIMEFIRST)
FIXME("unsuported arguments\n");
if(This->doc_obj->view_sink)
IAdviseSink_Release(This->doc_obj->view_sink);
if(pAdvSink)
IAdviseSink_AddRef(pAdvSink);
This->doc_obj->view_sink = pAdvSink;
return S_OK;
}
static HRESULT WINAPI ViewObject_GetAdvise(IViewObjectEx *iface, DWORD *pAspects, DWORD *pAdvf, IAdviseSink **ppAdvSink)

View file

@ -126,6 +126,11 @@
#define DISPID_IE8_ELEMENTMAX (DISPID_SITE-1)
#define DISPID_IE8_ELEMENT DISPID_IE8_ELEMENTBASE
#define DISPID_IE8_FRAMESITEBASE (DISPID_FRAMESITE+1120)
#define DISPID_IE8_FRAMEMAX (WEBOC_DISPIDBASE-1)
#define DISPID_IE8_FRAME DISPID_IE8_FRAMESITEBASE
#define DISPID_IE8_IFRAME DISPID_IE8_FRAMESITEBASE
#define DISPID_COLLECTION (DISPID_NORMAL_FIRST+500)
#define DISPID_OPTIONS_COL (DISPID_NORMAL_FIRST+500)
#define DISPID_IMG (DISPID_IMGBASE+1000)
@ -2487,6 +2492,9 @@
/* IHTMLScriptElement2 */
#define DISPID_IHTMLSCRIPTELEMENT2_CHARSET DISPID_SCRIPT+10
/* IHTMLScriptElement3 */
#define DISPID_IHTMLSCRIPTELEMENT3_IE8_SRC DISPID_IE8_SCRIPT
/* IHTMLFrameBase */
#define DISPID_IHTMLFRAMEBASE_SRC DISPID_FRAMESITE+0
#define DISPID_IHTMLFRAMEBASE_NAME STDPROPID_XOBJ_NAME
@ -2508,6 +2516,19 @@
/* IHTMLFrameBase3 */
#define DISPID_IHTMLFRAMEBASE3_LONGDESC DISPID_FRAMESITE+10
/* IHTMLFrameElement */
#define DISPID_IHTMLFRAMEELEMENT_BORDERCOLOR DISPID_FRAME+1
/* IHTMLFrameElement2 */
#define DISPID_IHTMLFRAMEELEMENT2_HEIGHT STDPROPID_XOBJ_HEIGHT
#define DISPID_IHTMLFRAMEELEMENT2_WIDTH STDPROPID_XOBJ_WIDTH
/* IHTMLFrameElement3 */
#define DISPID_IHTMLFRAMEELEMENT3_CONTENTDOCUMENT DISPID_IE8_FRAME
#define DISPID_IHTMLFRAMEELEMENT3_IE8_SRC DISPID_IE8_FRAME+1
#define DISPID_IHTMLFRAMEELEMENT3_IE8_LONGDESC DISPID_IE8_FRAME+2
#define DISPID_IHTMLFRAMEELEMENT3_IE8_FRAMEBORDER DISPID_IE8_FRAME+3
/* IHTMLIFrameElement */
#define DISPID_IHTMLIFRAMEELEMENT_VSPACE DISPID_IFRAME+1
#define DISPID_IHTMLIFRAMEELEMENT_HSPACE DISPID_IFRAME+2

View file

@ -1,5 +1,5 @@
/*
* Copyright 2004-2007 Jacek Caban for CodeWeavers
* Copyright 2004-2010 Jacek Caban for CodeWeavers
* Copyright 2008 Konstantin Kondratyuk (Etersoft)
*
* This library is free software; you can redistribute it and/or
@ -2876,7 +2876,7 @@ interface IHTMLCurrentStyle4 : IDispatch
[propget, id(DISPID_IHTMLCURRENTSTYLE4_MAXWIDTH), displaybind, bindable]
HRESULT maxWidth([retval, out] VARIANT * p);
};
}
/*****************************************************************************
* DispHTMLCurrentStyle dispinterface
@ -5903,7 +5903,7 @@ coclass HTMLStyleSheetPage
[default] dispinterface DispHTMLStyleSheetPage;
interface IHTMLStyleSheetPage;
interface IHTMLDOMConstructor;
};
}
[
odl,
@ -6702,7 +6702,7 @@ methods:
[id(DISPID_HTMLFORMELEMENTEVENTS_ONRESET)]
VARIANT_BOOL onreset();
};
}
interface IHTMLEventObj;
@ -6905,7 +6905,7 @@ methods:
[id(DISPID_HTMLFORMELEMENTEVENTS2_ONRESET)]
VARIANT_BOOL onreset([in] IHTMLEventObj* pEvtObj);
};
}
[
noncreatable,
@ -7365,7 +7365,7 @@ interface IHTMLControlElement : IDispatch
[propget, id(DISPID_IHTMLCONTROLELEMENT_CLIENTLEFT), displaybind, bindable]
HRESULT clientLeft([retval, out] LONG * p);
};
}
/*****************************************************************************
* IHTMLBodyElement interface
@ -7634,7 +7634,7 @@ methods:
[propget, id(DISPID_IHTMLBODYELEMENT2_ONAFTERPRINT), displaybind, bindable]
VARIANT onafterprint();
};
}
[
uuid(3050f24a-98b5-11cf-bb82-00aa00bdce0b)
@ -7655,7 +7655,7 @@ coclass HTMLBody
interface IHTMLTextContainer;
interface IHTMLBodyElement;
interface IHTMLBodyElement2;
};
}
/*****************************************************************************
* IHTMLAnchorElement interface
@ -8970,6 +8970,92 @@ interface IHTMLTextAreaElement : IDispatch
HRESULT createTextRange([retval, out] IHTMLTxtRange **range);
}
/*****************************************************************************
* DispHTMLTextAreaElement dispinterface
*/
[
hidden,
uuid(3050f521-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLTextAreaElement
{
properties:
methods:
WINE_HTMLDATAELEMENT_DISPINTERFACE_DECL;
[propget, id(DISPID_IHTMLTEXTAREAELEMENT_TYPE)]
BSTR type();
[propput, id(DISPID_IHTMLTEXTAREAELEMENT_VALUE), displaybind, bindable]
void value(BSTR v);
[propget, id(DISPID_IHTMLTEXTAREAELEMENT_VALUE), displaybind, bindable]
BSTR value();
[propput, id(DISPID_IHTMLTEXTAREAELEMENT_NAME), displaybind, bindable]
void name(BSTR v);
[propget, id(DISPID_IHTMLTEXTAREAELEMENT_NAME), displaybind, bindable]
BSTR name();
[propput, id(DISPID_IHTMLTEXTAREAELEMENT_STATUS)]
void status(VARIANT v);
[propget, id(DISPID_IHTMLTEXTAREAELEMENT_STATUS)]
VARIANT status();
[propget, id(DISPID_IHTMLTEXTAREAELEMENT_FORM)]
IHTMLFormElement *form();
[propput, id(DISPID_IHTMLTEXTAREAELEMENT_DEFAULTVALUE), displaybind, bindable, hidden]
void defaultValue(BSTR v);
[propget, id(DISPID_IHTMLTEXTAREAELEMENT_DEFAULTVALUE), displaybind, bindable, hidden]
BSTR defaultValue();
[id(DISPID_IHTMLTEXTAREAELEMENT_SELECT)]
void select();
[propput, id(DISPID_IHTMLTEXTAREAELEMENT_ONCHANGE), displaybind, bindable]
void onchange(VARIANT v);
[propget, id(DISPID_IHTMLTEXTAREAELEMENT_ONCHANGE), displaybind, bindable]
VARIANT onchange();
[propput, id(DISPID_IHTMLTEXTAREAELEMENT_ONSELECT), displaybind, bindable]
void onselect(VARIANT v);
[propget, id(DISPID_IHTMLTEXTAREAELEMENT_ONSELECT), displaybind, bindable]
VARIANT onselect();
[propput, id(DISPID_IHTMLTEXTAREAELEMENT_READONLY), displaybind, bindable]
void readOnly(VARIANT_BOOL v);
[propget, id(DISPID_IHTMLTEXTAREAELEMENT_READONLY), displaybind, bindable]
VARIANT_BOOL readOnly();
[propput, id(DISPID_IHTMLTEXTAREAELEMENT_ROWS), displaybind, bindable]
void rows(LONG v);
[propget, id(DISPID_IHTMLTEXTAREAELEMENT_ROWS), displaybind, bindable]
LONG rows();
[propput, id(DISPID_IHTMLTEXTAREAELEMENT_COLS), displaybind, bindable]
void cols(LONG v);
[propget, id(DISPID_IHTMLTEXTAREAELEMENT_COLS), displaybind, bindable]
LONG cols();
[propput, id(DISPID_IHTMLTEXTAREAELEMENT_WRAP), displaybind, bindable]
void wrap(BSTR v);
[propget, id(DISPID_IHTMLTEXTAREAELEMENT_WRAP), displaybind, bindable]
BSTR wrap();
[id(DISPID_IHTMLTEXTAREAELEMENT_CREATETEXTRANGE)]
IHTMLTxtRange *createTextRange();
}
/*****************************************************************************
* DispHTMLUnknownElement interface
*/
@ -10245,7 +10331,7 @@ interface IHTMLWindow4 : IDispatch
[propget, id(DISPID_IHTMLWINDOW4_FRAMEELEMENT)]
HRESULT frameElement([retval, out] IHTMLFrameBase* * p);
};
}
/*****************************************************************************
* IHTMLWindow5 interface
@ -10263,7 +10349,7 @@ interface IHTMLWindow5 : IDispatch
[propget, id(DISPID_IHTMLWINDOW5_XMLHTTPREQUEST)]
HRESULT XMLHttpRequest([retval, out] VARIANT * p);
};
}
/*****************************************************************************
* DispHTMLScreen dispinterface
@ -10902,7 +10988,7 @@ methods:
[propget, id(DISPID_IHTMLWINDOW5_XMLHTTPREQUEST)]
VARIANT XMLHttpRequest();
};
}
/*****************************************************************************
* HTMLWindowEvents interface
@ -10949,7 +11035,7 @@ methods:
[id(DISPID_HTMLWINDOWEVENTS_ONAFTERPRINT)]
void onafterprint();
};
}
/*****************************************************************************
* HTMLWindowEvents2 interface
@ -10996,7 +11082,7 @@ methods:
[id(DISPID_HTMLWINDOWEVENTS2_ONAFTERPRINT)]
void onafterprint([in] IHTMLEventObj* pEvtObj);
};
}
/*****************************************************************************
* HTMLWindowProxy class
@ -11013,7 +11099,7 @@ coclass HTMLWindowProxy
interface IHTMLWindow3;
interface IHTMLWindow4;
interface IHTMLWindow5;
};
}
/*****************************************************************************
* HTMLDocumentEvents2 interface
@ -11473,7 +11559,7 @@ methods:
[id(DISPID_HTMLTEXTCONTAINEREVENTS_ONSELECT)]
void onselect();
};
}
/*****************************************************************************
* HTMLTextContainerEvents2 interface
@ -11677,7 +11763,7 @@ methods:
[id(DISPID_HTMLTEXTCONTAINEREVENTS2_ONSELECT)]
void onselect([in] IHTMLEventObj* pEvtObj);
};
}
/*****************************************************************************
* IHTMLDocument interface
@ -13329,7 +13415,8 @@ methods:
[id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEWHEEL)]
VARIANT_BOOL onmousewheel([in] IHTMLEventObj* pEvtObj);
};
}
[
hidden,
uuid(3050f33c-98b5-11cf-bb82-00aa00bdce0b)
@ -13526,8 +13613,7 @@ methods:
[id(DISPID_HTMLELEMENTEVENTS_ONFOCUSOUT)]
void onfocusout();
};
}
[
noncreatable,
@ -13943,7 +14029,7 @@ methods:
[id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEWHEEL)]
VARIANT_BOOL onmousewheel([in] IHTMLEventObj* pEvtObj);
};
}
/*****************************************************************************
* IHTMLTableCaption interface
@ -14153,7 +14239,7 @@ interface IHTMLTable2 : IDispatch
HRESULT moveRow([defaultvalue(-1), in] LONG indexFrom,
[defaultvalue(-1), in] LONG indexTo,
[retval, out] IDispatch** row);
};
}
[
odl,
@ -14168,7 +14254,7 @@ interface IHTMLTable3 : IDispatch
[propget, id(DISPID_IHTMLTABLE3_SUMMARY), displaybind, bindable]
HRESULT summary([retval, out] BSTR * p);
};
}
[
noncreatable,
@ -14191,7 +14277,7 @@ coclass HTMLTable
interface IHTMLTable;
interface IHTMLTable2;
interface IHTMLTable3;
};
}
[
odl,
@ -14626,6 +14712,74 @@ interface IHTMLScriptElement2 : IDispatch
HRESULT charset([retval, out] BSTR *p);
}
/*****************************************************************************
* DispHTMLScriptElement dispinterface
*/
[
hidden,
uuid(3050f530-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLScriptElement
{
properties:
methods:
WINE_HTMLELEMENT_DISPINTERFACE_DECL;
[propput, id(DISPID_IHTMLSCRIPTELEMENT_SRC), displaybind, bindable]
void src(BSTR v);
[propget, id(DISPID_IHTMLSCRIPTELEMENT_SRC), displaybind, bindable]
BSTR src();
[propput, id(DISPID_IHTMLSCRIPTELEMENT_HTMLFOR), displaybind, bindable]
void htmlFor(BSTR v);
[propget, id(DISPID_IHTMLSCRIPTELEMENT_HTMLFOR), displaybind, bindable]
BSTR htmlFor();
[propput, id(DISPID_IHTMLSCRIPTELEMENT_EVENT), displaybind, bindable]
void event(BSTR v);
[propget, id(DISPID_IHTMLSCRIPTELEMENT_EVENT), displaybind, bindable]
BSTR event();
[propput, id(DISPID_IHTMLSCRIPTELEMENT_TEXT), displaybind, bindable]
void text(BSTR v);
[propget, id(DISPID_IHTMLSCRIPTELEMENT_TEXT), displaybind, bindable]
BSTR text();
[propput, id(DISPID_IHTMLSCRIPTELEMENT_DEFER), displaybind, bindable]
void defer(VARIANT_BOOL v);
[propget, id(DISPID_IHTMLSCRIPTELEMENT_DEFER), displaybind, bindable]
VARIANT_BOOL defer();
[propput, id(DISPID_IHTMLSCRIPTELEMENT_ONERROR), displaybind, bindable]
void onerror(VARIANT v);
[propget, id(DISPID_IHTMLSCRIPTELEMENT_ONERROR), displaybind, bindable]
VARIANT onerror();
[propput, id(DISPID_IHTMLSCRIPTELEMENT_TYPE), displaybind, bindable]
void type(BSTR v);
[propget, id(DISPID_IHTMLSCRIPTELEMENT_TYPE), displaybind, bindable]
BSTR type();
[propput, id(DISPID_IHTMLSCRIPTELEMENT2_CHARSET), displaybind, bindable]
void charset(BSTR v);
[propget, id(DISPID_IHTMLSCRIPTELEMENT2_CHARSET), displaybind, bindable]
BSTR charset();
[propput, id(DISPID_IHTMLSCRIPTELEMENT3_IE8_SRC)]
void ie8_src(BSTR v);
[propget, id(DISPID_IHTMLSCRIPTELEMENT3_IE8_SRC)]
BSTR ie8_src();
}
/*****************************************************************************
* IHTMLFrameBase interface
*/
@ -14692,6 +14846,61 @@ interface IHTMLFrameBase : IDispatch
HRESULT scrolling([out, retval] BSTR *p);
}
#define WINE_IHTMLFRAMEBASE_DISPINTERFACE_DECL \
[propput, id(DISPID_IHTMLFRAMEBASE_SRC)] \
void src(BSTR v); \
\
[propget, id(DISPID_IHTMLFRAMEBASE_SRC)] \
BSTR src(); \
\
[propput, id(DISPID_IHTMLFRAMEBASE_NAME)] \
void name(BSTR v); \
\
[propget, id(DISPID_IHTMLFRAMEBASE_NAME)] \
BSTR name(); \
\
[propput, id(DISPID_IHTMLFRAMEBASE_BORDER)] \
void border(VARIANT v); \
\
[propget, id(DISPID_IHTMLFRAMEBASE_BORDER)] \
VARIANT border(); \
\
[propput, id(DISPID_IHTMLFRAMEBASE_FRAMEBORDER)] \
void frameBorder(BSTR v); \
\
[propget, id(DISPID_IHTMLFRAMEBASE_FRAMEBORDER)] \
BSTR frameBorder(); \
\
[propput, id(DISPID_IHTMLFRAMEBASE_FRAMESPACING)] \
void frameSpacing(VARIANT v); \
\
[propget, id(DISPID_IHTMLFRAMEBASE_FRAMESPACING)] \
VARIANT frameSpacing(); \
\
[propput, id(DISPID_IHTMLFRAMEBASE_MARGINWIDTH)] \
void marginWidth(VARIANT v); \
\
[propget, id(DISPID_IHTMLFRAMEBASE_MARGINWIDTH)] \
VARIANT marginWidth(); \
\
[propput, id(DISPID_IHTMLFRAMEBASE_MARGINHEIGHT)] \
void marginHeight(VARIANT v); \
\
[propget, id(DISPID_IHTMLFRAMEBASE_MARGINHEIGHT)] \
VARIANT marginHeight(); \
\
[propput, id(DISPID_IHTMLFRAMEBASE_NORESIZE)] \
void noResize(VARIANT_BOOL v); \
\
[propget, id(DISPID_IHTMLFRAMEBASE_NORESIZE)] \
VARIANT_BOOL noResize(); \
\
[propput, id(DISPID_IHTMLFRAMEBASE_SCROLLING)] \
void scrolling(BSTR v); \
\
[propget, id(DISPID_IHTMLFRAMEBASE_SCROLLING)] \
BSTR scrolling()
/*****************************************************************************
* IHTMLFrameBase2 interface
*/
@ -14728,6 +14937,152 @@ interface IHTMLFrameBase2 : IDispatch
HRESULT allowTransparency([retval, out] VARIANT_BOOL *p);
}
#define WINE_IHTMLFRAMEBASE2_DISPINTERFACE_DECL \
[propget, id(DISPID_IHTMLFRAMEBASE2_CONTENTWINDOW)] \
IHTMLWindow2 *contentWindow(); \
\
[propput, id(DISPID_IHTMLFRAMEBASE2_ONLOAD), displaybind, bindable] \
void onload(VARIANT v); \
\
[propget, id(DISPID_IHTMLFRAMEBASE2_ONLOAD), displaybind, bindable] \
VARIANT onload(); \
\
[propput, id(DISPID_IHTMLFRAMEBASE2_ALLOWTRANSPARENCY)] \
void allowTransparency(VARIANT_BOOL v); \
\
[propget, id(DISPID_IHTMLFRAMEBASE2_ALLOWTRANSPARENCY)] \
VARIANT_BOOL allowTransparency()
#define WINE_IHTMLFRAMEBASE3_DISPINTERFACE_DECL \
[propput, id(DISPID_IHTMLFRAMEBASE3_LONGDESC), displaybind, bindable] \
void longDesc(BSTR v); \
\
[propget, id(DISPID_IHTMLFRAMEBASE3_LONGDESC), displaybind, bindable] \
BSTR longDesc()
#define WINE_HTMLFRAMEBASE_DISPINTERFACE_DECL \
WINE_HTMLDATAELEMENT_DISPINTERFACE_DECL; \
WINE_IHTMLFRAMEBASE_DISPINTERFACE_DECL; \
WINE_IHTMLFRAMEBASE2_DISPINTERFACE_DECL; \
WINE_IHTMLFRAMEBASE3_DISPINTERFACE_DECL
/*****************************************************************************
* IHTMLFrameElement3 interface
*/
[
odl,
oleautomation,
dual,
uuid(3051042d-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLFrameElement3 : IDispatch
{
[propget, id(DISPID_IHTMLFRAMEELEMENT3_CONTENTDOCUMENT)]
HRESULT contentDocument([out, retval] IDispatch **p);
[propput, id(DISPID_IHTMLFRAMEELEMENT3_IE8_SRC)]
HRESULT src([in] BSTR v);
[propget, id(DISPID_IHTMLFRAMEELEMENT3_IE8_SRC)]
HRESULT src([out, retval] BSTR *p);
[propput, id(DISPID_IHTMLFRAMEELEMENT3_IE8_LONGDESC)]
HRESULT longDesc([in] BSTR v);
[propget, id(DISPID_IHTMLFRAMEELEMENT3_IE8_LONGDESC)]
HRESULT longDesc([out, retval] BSTR *p);
[propput, id(DISPID_IHTMLFRAMEELEMENT3_IE8_FRAMEBORDER)]
HRESULT frameBorder([in] BSTR v);
[propget, id(DISPID_IHTMLFRAMEELEMENT3_IE8_FRAMEBORDER)]
HRESULT frameBorder([out, retval] BSTR * p);
}
/*****************************************************************************
* DispHTMLFrameElement dispinterface
*/
[
hidden,
uuid(3050f513-98b5-11cf-bb82-00aa00bdce0b)
]
dispinterface DispHTMLFrameElement
{
properties:
methods:
WINE_HTMLFRAMEBASE_DISPINTERFACE_DECL;
[propput, id(DISPID_IHTMLFRAMEELEMENT_BORDERCOLOR)]
void borderColor(VARIANT v);
[propget, id(DISPID_IHTMLFRAMEELEMENT_BORDERCOLOR)]
VARIANT borderColor();
[propput, id(DISPID_IHTMLFRAMEELEMENT2_HEIGHT)]
void height(VARIANT v);
[propget, id(DISPID_IHTMLFRAMEELEMENT2_HEIGHT)]
VARIANT height();
[propput, id(DISPID_IHTMLFRAMEELEMENT2_WIDTH)]
void width(VARIANT v);
[propget, id(DISPID_IHTMLFRAMEELEMENT2_WIDTH)]
VARIANT width();
[propget, id(DISPID_IHTMLFRAMEELEMENT3_CONTENTDOCUMENT)]
IDispatch *contentDocument();
[propput, id(DISPID_IHTMLFRAMEELEMENT3_IE8_SRC)]
void ie8_src(BSTR v);
[propget, id(DISPID_IHTMLFRAMEELEMENT3_IE8_SRC)]
BSTR ie8_src();
[propput, id(DISPID_IHTMLFRAMEELEMENT3_IE8_LONGDESC)]
void ie8_longDesc(BSTR v);
[propget, id(DISPID_IHTMLFRAMEELEMENT3_IE8_LONGDESC)]
BSTR ie8_longDesc();
[propput, id(DISPID_IHTMLFRAMEELEMENT3_IE8_FRAMEBORDER)]
void ie8_frameBorder(BSTR v);
[propget, id(DISPID_IHTMLFRAMEELEMENT3_IE8_FRAMEBORDER)]
BSTR ie8_frameBorder();
}
/*****************************************************************************
* IHTMLIFrameElement interface
*/
[
odl,
oleautomation,
dual,
uuid(3050f315-98b5-11cf-bb82-00aa00bdce0b)
]
interface IHTMLIFrameElement : IDispatch
{
[propput, id(DISPID_IHTMLIFRAMEELEMENT_VSPACE)]
HRESULT vspace([in] LONG v);
[propget, id(DISPID_IHTMLIFRAMEELEMENT_VSPACE)]
HRESULT vspace([retval, out] LONG *p);
[propput, id(DISPID_IHTMLIFRAMEELEMENT_HSPACE)]
HRESULT hspace([in] LONG v);
[propget, id(DISPID_IHTMLIFRAMEELEMENT_HSPACE)]
HRESULT hspace([retval, out] LONG *p);
[propput, id(DISPID_IHTMLIFRAMEELEMENT_ALIGN), displaybind, bindable]
HRESULT align([in] BSTR v);
[propget, id(DISPID_IHTMLIFRAMEELEMENT_ALIGN), displaybind, bindable]
HRESULT align([retval, out] BSTR *p);
}
/*****************************************************************************
* DispHTMLIFrame dispinterface
*/
@ -14739,82 +15094,7 @@ dispinterface DispHTMLIFrame
{
properties:
methods:
WINE_HTMLDATAELEMENT_DISPINTERFACE_DECL;
[propput, id(DISPID_IHTMLFRAMEBASE_SRC)]
void src(BSTR v);
[propget, id(DISPID_IHTMLFRAMEBASE_SRC)]
BSTR src();
[propput, id(DISPID_IHTMLFRAMEBASE_NAME)]
void name(BSTR v);
[propget, id(DISPID_IHTMLFRAMEBASE_NAME)]
BSTR name();
[propput, id(DISPID_IHTMLFRAMEBASE_BORDER)]
void border(VARIANT v);
[propget, id(DISPID_IHTMLFRAMEBASE_BORDER)]
VARIANT border();
[propput, id(DISPID_IHTMLFRAMEBASE_FRAMEBORDER)]
void frameBorder(BSTR v);
[propget, id(DISPID_IHTMLFRAMEBASE_FRAMEBORDER)]
BSTR frameBorder();
[propput, id(DISPID_IHTMLFRAMEBASE_FRAMESPACING)]
void frameSpacing(VARIANT v);
[propget, id(DISPID_IHTMLFRAMEBASE_FRAMESPACING)]
VARIANT frameSpacing();
[propput, id(DISPID_IHTMLFRAMEBASE_MARGINWIDTH)]
void marginWidth(VARIANT v);
[propget, id(DISPID_IHTMLFRAMEBASE_MARGINWIDTH)]
VARIANT marginWidth();
[propput, id(DISPID_IHTMLFRAMEBASE_MARGINHEIGHT)]
void marginHeight(VARIANT v);
[propget, id(DISPID_IHTMLFRAMEBASE_MARGINHEIGHT)]
VARIANT marginHeight();
[propput, id(DISPID_IHTMLFRAMEBASE_NORESIZE)]
void noResize(VARIANT_BOOL v);
[propget, id(DISPID_IHTMLFRAMEBASE_NORESIZE)]
VARIANT_BOOL noResize();
[propput, id(DISPID_IHTMLFRAMEBASE_SCROLLING)]
void scrolling(BSTR v);
[propget, id(DISPID_IHTMLFRAMEBASE_SCROLLING)]
BSTR scrolling();
[propget, id(DISPID_IHTMLFRAMEBASE2_CONTENTWINDOW)]
IHTMLWindow2 *contentWindow();
[propput, id(DISPID_IHTMLFRAMEBASE2_ONLOAD), displaybind, bindable]
void onload(VARIANT v);
[propget, id(DISPID_IHTMLFRAMEBASE2_ONLOAD), displaybind, bindable]
VARIANT onload();
[propput, id(DISPID_IHTMLFRAMEBASE2_ALLOWTRANSPARENCY)]
void allowTransparency(VARIANT_BOOL v);
[propget, id(DISPID_IHTMLFRAMEBASE2_ALLOWTRANSPARENCY)]
VARIANT_BOOL allowTransparency();
[propput, id(DISPID_IHTMLFRAMEBASE3_LONGDESC), displaybind, bindable]
void longDesc(BSTR v);
[propget, id(DISPID_IHTMLFRAMEBASE3_LONGDESC), displaybind, bindable]
BSTR longDesc();
WINE_HTMLFRAMEBASE_DISPINTERFACE_DECL;
[propput, id(DISPID_IHTMLIFRAMEELEMENT_VSPACE)]
void vspace(LONG v);