* Sync with Wine 1.7.1.
CORE-7469

svn path=/trunk/; revision=60578
This commit is contained in:
Amine Khaldi 2013-10-07 14:22:37 +00:00
parent 12466faa47
commit d31f885436
34 changed files with 1094 additions and 384 deletions

View file

@ -60,5 +60,5 @@ modules\optional\vmx_fb.dll 1 optional
modules\optional\vmx_mode.dll 1 optional modules\optional\vmx_mode.dll 1 optional
modules\optional\vmx_svga.inf 6 optional modules\optional\vmx_svga.inf 6 optional
modules\optional\vmx_svga.sys 2 optional modules\optional\vmx_svga.sys 2 optional
modules\optional\wine_gecko-1.9-x86.msi 4 optional modules\optional\wine_gecko-2.21-x86.msi 4 optional
boot\bootdata\bootcdregtest\AHKAppTests.cmd 7 optional boot\bootdata\bootcdregtest\AHKAppTests.cmd 7 optional

View file

@ -39,11 +39,11 @@
WINE_DEFAULT_DEBUG_CHANNEL(appwiz); WINE_DEFAULT_DEBUG_CHANNEL(appwiz);
#define GECKO_VERSION "1.9" #define GECKO_VERSION "2.21"
#ifdef __i386__ #ifdef __i386__
#define ARCH_STRING "x86" #define ARCH_STRING "x86"
#define GECKO_SHA "cadf123dd7c4cedf2b22c066b6259e8649ac2b40" #define GECKO_SHA "a514fc4d53783a586c7880a676c415695fe934a3"
#else #else
#define ARCH_STRING "" #define ARCH_STRING ""
#define GECKO_SHA "???" #define GECKO_SHA "???"
@ -73,7 +73,7 @@ static const addon_info_t *addon;
static HWND install_dialog = NULL; static HWND install_dialog = NULL;
static WCHAR GeckoUrl[] = L"http://www.reactos.org/wine-gecko.php"; static WCHAR GeckoUrl[] = L"http://dl.dropboxusercontent.com/u/743491/ReactOS/wine_gecko-2.21-x86.msi";
/* SHA definitions are copied from advapi32. They aren't available in headers. */ /* SHA definitions are copied from advapi32. They aren't available in headers. */

View file

@ -108,9 +108,9 @@ HRESULT create_redirect_nschannel(const WCHAR*,nsChannel*,nsChannel**) DECLSPEC_
nsresult on_start_uri_open(NSContainer*,nsIURI*,cpp_bool*) DECLSPEC_HIDDEN; nsresult on_start_uri_open(NSContainer*,nsIURI*,cpp_bool*) DECLSPEC_HIDDEN;
HRESULT hlink_frame_navigate(HTMLDocument*,LPCWSTR,nsChannel*,DWORD,BOOL*) DECLSPEC_HIDDEN; HRESULT hlink_frame_navigate(HTMLDocument*,LPCWSTR,nsChannel*,DWORD,BOOL*) DECLSPEC_HIDDEN;
HRESULT create_doc_uri(HTMLOuterWindow*,const WCHAR*,nsWineURI**) DECLSPEC_HIDDEN; HRESULT create_doc_uri(HTMLOuterWindow*,IUri*,nsWineURI**) DECLSPEC_HIDDEN;
HRESULT load_nsuri(HTMLOuterWindow*,nsWineURI*,nsChannelBSC*,DWORD) DECLSPEC_HIDDEN; HRESULT load_nsuri(HTMLOuterWindow*,nsWineURI*,nsChannelBSC*,DWORD) DECLSPEC_HIDDEN;
HRESULT set_moniker(HTMLDocument*,IMoniker*,IBindCtx*,nsChannelBSC*,BOOL) DECLSPEC_HIDDEN; HRESULT set_moniker(HTMLOuterWindow*,IMoniker*,IUri*,IBindCtx*,nsChannelBSC*,BOOL) DECLSPEC_HIDDEN;
void prepare_for_binding(HTMLDocument*,IMoniker*,DWORD) DECLSPEC_HIDDEN; void prepare_for_binding(HTMLDocument*,IMoniker*,DWORD) DECLSPEC_HIDDEN;
HRESULT super_navigate(HTMLOuterWindow*,IUri*,DWORD,const WCHAR*,BYTE*,DWORD) DECLSPEC_HIDDEN; HRESULT super_navigate(HTMLOuterWindow*,IUri*,DWORD,const WCHAR*,BYTE*,DWORD) DECLSPEC_HIDDEN;
HRESULT load_uri(HTMLOuterWindow*,IUri*,DWORD) DECLSPEC_HIDDEN; HRESULT load_uri(HTMLOuterWindow*,IUri*,DWORD) DECLSPEC_HIDDEN;
@ -121,8 +121,9 @@ HRESULT create_channelbsc(IMoniker*,const WCHAR*,BYTE*,DWORD,BOOL,nsChannelBSC**
HRESULT channelbsc_load_stream(HTMLInnerWindow*,IStream*) DECLSPEC_HIDDEN; HRESULT channelbsc_load_stream(HTMLInnerWindow*,IStream*) DECLSPEC_HIDDEN;
void channelbsc_set_channel(nsChannelBSC*,nsChannel*,nsIStreamListener*,nsISupports*) DECLSPEC_HIDDEN; void channelbsc_set_channel(nsChannelBSC*,nsChannel*,nsIStreamListener*,nsISupports*) DECLSPEC_HIDDEN;
IUri *nsuri_get_uri(nsWineURI*) DECLSPEC_HIDDEN; IUri *nsuri_get_uri(nsWineURI*) DECLSPEC_HIDDEN;
HRESULT create_relative_uri(HTMLOuterWindow*,const WCHAR*,IUri**) DECLSPEC_HIDDEN;
HRESULT create_relative_uri(HTMLOuterWindow*,const WCHAR*,IUri**) DECLSPEC_HIDDEN;
HRESULT create_uri(const WCHAR*,DWORD,IUri**) DECLSPEC_HIDDEN;
IUri *get_uri_nofrag(IUri*) DECLSPEC_HIDDEN; IUri *get_uri_nofrag(IUri*) DECLSPEC_HIDDEN;
void set_current_mon(HTMLOuterWindow*,IMoniker*,DWORD) DECLSPEC_HIDDEN; void set_current_mon(HTMLOuterWindow*,IMoniker*,DWORD) DECLSPEC_HIDDEN;

View file

@ -270,7 +270,7 @@ static void add_func_info(dispex_data_t *data, DWORD *size, tid_t tid, const FUN
info->prop_vt = desc->elemdescFunc.tdesc.vt; info->prop_vt = desc->elemdescFunc.tdesc.vt;
if(info->prop_vt != VT_VOID && !is_arg_type_supported(info->prop_vt)) { if(info->prop_vt != VT_VOID && !is_arg_type_supported(info->prop_vt)) {
TRACE("%s: return type %d\n", debugstr_w(info->name), info->arg_types[i]); TRACE("%s: return type %d\n", debugstr_w(info->name), info->prop_vt);
return; /* Fallback to ITypeInfo::Invoke */ return; /* Fallback to ITypeInfo::Invoke */
} }
@ -1219,7 +1219,7 @@ static HRESULT invoke_builtin_prop(DispatchEx *This, DISPID id, LCID lcid, WORD
if(FAILED(hres)) if(FAILED(hres))
return hres; return hres;
if(flags != (DISPATCH_PROPERTYGET|DISPATCH_METHOD)) { if(flags != (DISPATCH_PROPERTYGET|DISPATCH_METHOD) || dp->cArgs) {
if(V_VT(&v) != VT_DISPATCH) { if(V_VT(&v) != VT_DISPATCH) {
FIXME("Not a function %s\n", debugstr_variant(&v)); FIXME("Not a function %s\n", debugstr_variant(&v));
VariantClear(&v); VariantClear(&v);
@ -1231,7 +1231,7 @@ static HRESULT invoke_builtin_prop(DispatchEx *This, DISPID id, LCID lcid, WORD
}else if(res) { }else if(res) {
*res = v; *res = v;
}else { }else {
IDispatch_Release(V_DISPATCH(&v)); VariantClear(&v);
} }
} }
} }

View file

@ -29,6 +29,7 @@
//#include "winuser.h" //#include "winuser.h"
#include <ole2.h> #include <ole2.h>
#include <mshtmcid.h> #include <mshtmcid.h>
#include <shlguid.h>
#include <wine/debug.h> #include <wine/debug.h>
@ -1019,17 +1020,17 @@ static HRESULT query_edit_status(HTMLDocument *This, OLECMD *cmd)
static INT_PTR CALLBACK hyperlink_dlgproc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) static INT_PTR CALLBACK hyperlink_dlgproc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
{ {
static const WCHAR wszOther[] = {'(','o','t','h','e','r',')',0}; static const WCHAR wszOther[] = {'(','o','t','h','e','r',')',0};
static const WCHAR wszFile[] = {'f','i','l','e',':',0};
static const WCHAR wszFtp[] = {'f','t','p',':',0};
static const WCHAR wszHttp[] = {'h','t','t','p',':',0};
static const WCHAR wszHttps[] = {'h','t','t','p','s',':',0};
static const WCHAR wszMailto[] = {'m','a','i','l','t','o',':',0};
static const WCHAR wszNews[] = {'n','e','w','s',':',0};
switch (msg) switch (msg)
{ {
case WM_INITDIALOG: case WM_INITDIALOG:
{ {
static const WCHAR wszFile[] = {'f','i','l','e',':',0};
static const WCHAR wszFtp[] = {'f','t','p',':',0};
static const WCHAR wszHttp[] = {'h','t','t','p',':',0};
static const WCHAR wszHttps[] = {'h','t','t','p','s',':',0};
static const WCHAR wszMailto[] = {'m','a','i','l','t','o',':',0};
static const WCHAR wszNews[] = {'n','e','w','s',':',0};
INT def_idx; INT def_idx;
HWND hwndCB = GetDlgItem(hwnd, IDC_TYPE); HWND hwndCB = GetDlgItem(hwnd, IDC_TYPE);
HWND hwndURL = GetDlgItem(hwnd, IDC_URL); HWND hwndURL = GetDlgItem(hwnd, IDC_URL);
@ -1105,8 +1106,9 @@ static INT_PTR CALLBACK hyperlink_dlgproc(HWND hwnd, UINT msg, WPARAM wparam, LP
/* add new protocol */ /* add new protocol */
if (*type != '\0') if (*type != '\0')
{ {
memcpy(url, type, strlenW(type) * sizeof(WCHAR)); memcpy(url, type, (strlenW(type) + 1) * sizeof(WCHAR));
memcpy(url + strlenW(type), wszSlashSlash, sizeof(wszSlashSlash)); if (strcmpW(type, wszMailto) && strcmpW(type, wszNews))
memcpy(url + strlenW(type), wszSlashSlash, sizeof(wszSlashSlash));
} }
SetWindowTextW(hwndURL, url); SetWindowTextW(hwndURL, url);
@ -1265,3 +1267,104 @@ HRESULT editor_is_dirty(HTMLDocument *This)
return modified ? S_OK : S_FALSE; return modified ? S_OK : S_FALSE;
} }
HRESULT setup_edit_mode(HTMLDocumentObj *doc)
{
IMoniker *mon;
HRESULT hres;
if(doc->usermode == EDITMODE)
return S_OK;
doc->usermode = EDITMODE;
if(doc->basedoc.window->mon) {
CLSID clsid = IID_NULL;
hres = IMoniker_GetClassID(doc->basedoc.window->mon, &clsid);
if(SUCCEEDED(hres)) {
/* We should use IMoniker::Save here */
FIXME("Use CLSID %s\n", debugstr_guid(&clsid));
}
}
if(doc->frame)
IOleInPlaceFrame_SetStatusText(doc->frame, NULL);
doc->basedoc.window->readystate = READYSTATE_UNINITIALIZED;
if(doc->client) {
IOleCommandTarget *cmdtrg;
hres = IOleClientSite_QueryInterface(doc->client, &IID_IOleCommandTarget, (void**)&cmdtrg);
if(SUCCEEDED(hres)) {
VARIANT var;
V_VT(&var) = VT_I4;
V_I4(&var) = 0;
IOleCommandTarget_Exec(cmdtrg, &CGID_ShellDocView, 37, 0, &var, NULL);
IOleCommandTarget_Release(cmdtrg);
}
}
if(doc->hostui) {
DOCHOSTUIINFO hostinfo;
memset(&hostinfo, 0, sizeof(DOCHOSTUIINFO));
hostinfo.cbSize = sizeof(DOCHOSTUIINFO);
hres = IDocHostUIHandler_GetHostInfo(doc->hostui, &hostinfo);
if(SUCCEEDED(hres))
/* FIXME: use hostinfo */
TRACE("hostinfo = {%u %08x %08x %s %s}\n",
hostinfo.cbSize, hostinfo.dwFlags, hostinfo.dwDoubleClick,
debugstr_w(hostinfo.pchHostCss), debugstr_w(hostinfo.pchHostNS));
}
update_doc(&doc->basedoc, UPDATE_UI);
if(doc->basedoc.window->mon) {
/* FIXME: We should find nicer way to do this */
remove_target_tasks(doc->basedoc.task_magic);
mon = doc->basedoc.window->mon;
IMoniker_AddRef(mon);
}else {
static const WCHAR about_blankW[] = {'a','b','o','u','t',':','b','l','a','n','k',0};
hres = CreateURLMoniker(NULL, about_blankW, &mon);
if(FAILED(hres)) {
FIXME("CreateURLMoniker failed: %08x\n", hres);
return hres;
}
}
hres = IPersistMoniker_Load(&doc->basedoc.IPersistMoniker_iface, TRUE, mon, NULL, 0);
IMoniker_Release(mon);
if(FAILED(hres))
return hres;
if(doc->ui_active) {
if(doc->ip_window)
call_set_active_object(doc->ip_window, NULL);
if(doc->hostui)
IDocHostUIHandler_HideUI(doc->hostui);
}
if(doc->ui_active) {
RECT rcBorderWidths;
if(doc->hostui)
IDocHostUIHandler_ShowUI(doc->hostui, DOCHOSTUITYPE_AUTHOR,
&doc->basedoc.IOleInPlaceActiveObject_iface, &doc->basedoc.IOleCommandTarget_iface,
doc->frame, doc->ip_window);
if(doc->ip_window)
call_set_active_object(doc->ip_window, &doc->basedoc.IOleInPlaceActiveObject_iface);
memset(&rcBorderWidths, 0, sizeof(rcBorderWidths));
if(doc->frame)
IOleInPlaceFrame_SetBorderSpace(doc->frame, &rcBorderWidths);
}
return S_OK;
}

View file

@ -269,15 +269,31 @@ static HRESULT WINAPI HTMLAnchorElement_get_target(IHTMLAnchorElement *iface, BS
static HRESULT WINAPI HTMLAnchorElement_put_rel(IHTMLAnchorElement *iface, BSTR v) static HRESULT WINAPI HTMLAnchorElement_put_rel(IHTMLAnchorElement *iface, BSTR v)
{ {
HTMLAnchorElement *This = impl_from_IHTMLAnchorElement(iface); HTMLAnchorElement *This = impl_from_IHTMLAnchorElement(iface);
FIXME("(%p)->(%s)\n", This, debugstr_w(v)); nsAString nsstr;
return E_NOTIMPL; nsresult nsres;
TRACE("(%p)->(%s)\n", This, debugstr_w(v));
nsAString_InitDepend(&nsstr, v);
nsres = nsIDOMHTMLAnchorElement_SetRel(This->nsanchor, &nsstr);
nsAString_Finish(&nsstr);
if(NS_FAILED(nsres))
return E_FAIL;
return S_OK;
} }
static HRESULT WINAPI HTMLAnchorElement_get_rel(IHTMLAnchorElement *iface, BSTR *p) static HRESULT WINAPI HTMLAnchorElement_get_rel(IHTMLAnchorElement *iface, BSTR *p)
{ {
HTMLAnchorElement *This = impl_from_IHTMLAnchorElement(iface); HTMLAnchorElement *This = impl_from_IHTMLAnchorElement(iface);
FIXME("(%p)->(%p)\n", This, p); nsAString nsstr;
return E_NOTIMPL; nsresult nsres;
TRACE("(%p)->(%p)\n", This, p);
nsAString_Init(&nsstr, NULL);
nsres = nsIDOMHTMLAnchorElement_GetRel(This->nsanchor, &nsstr);
return return_nsstr(nsres, &nsstr, p);
} }
static HRESULT WINAPI HTMLAnchorElement_put_rev(IHTMLAnchorElement *iface, BSTR v) static HRESULT WINAPI HTMLAnchorElement_put_rev(IHTMLAnchorElement *iface, BSTR v)
@ -453,8 +469,14 @@ static HRESULT WINAPI HTMLAnchorElement_put_hash(IHTMLAnchorElement *iface, BSTR
static HRESULT WINAPI HTMLAnchorElement_get_hash(IHTMLAnchorElement *iface, BSTR *p) static HRESULT WINAPI HTMLAnchorElement_get_hash(IHTMLAnchorElement *iface, BSTR *p)
{ {
HTMLAnchorElement *This = impl_from_IHTMLAnchorElement(iface); HTMLAnchorElement *This = impl_from_IHTMLAnchorElement(iface);
FIXME("(%p)->(%p)\n", This, p); nsAString hash_str;
return E_NOTIMPL; nsresult nsres;
TRACE("(%p)->(%p)\n", This, p);
nsAString_Init(&hash_str, NULL);
nsres = nsIDOMHTMLAnchorElement_GetHash(This->nsanchor, &hash_str);
return return_nsstr(nsres, &hash_str, p);
} }
static HRESULT WINAPI HTMLAnchorElement_put_onblur(IHTMLAnchorElement *iface, VARIANT v) static HRESULT WINAPI HTMLAnchorElement_put_onblur(IHTMLAnchorElement *iface, VARIANT v)

View file

@ -982,8 +982,11 @@ static HRESULT WINAPI HTMLCurrentStyle2_get_textUnderlinePosition(IHTMLCurrentSt
static HRESULT WINAPI HTMLCurrentStyle2_get_hasLayout(IHTMLCurrentStyle2 *iface, VARIANT_BOOL *p) static HRESULT WINAPI HTMLCurrentStyle2_get_hasLayout(IHTMLCurrentStyle2 *iface, VARIANT_BOOL *p)
{ {
HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle2(iface); HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle2(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL; FIXME("(%p)->(%p) returning true\n", This, p);
*p = VARIANT_TRUE;
return S_OK;
} }
static HRESULT WINAPI HTMLCurrentStyle2_get_scrollbarBaseColor(IHTMLCurrentStyle2 *iface, VARIANT *p) static HRESULT WINAPI HTMLCurrentStyle2_get_scrollbarBaseColor(IHTMLCurrentStyle2 *iface, VARIANT *p)

View file

@ -409,15 +409,55 @@ static HRESULT WINAPI HTMLDocument_get_title(IHTMLDocument2 *iface, BSTR *p)
static HRESULT WINAPI HTMLDocument_get_scripts(IHTMLDocument2 *iface, IHTMLElementCollection **p) static HRESULT WINAPI HTMLDocument_get_scripts(IHTMLDocument2 *iface, IHTMLElementCollection **p)
{ {
HTMLDocument *This = impl_from_IHTMLDocument2(iface); HTMLDocument *This = impl_from_IHTMLDocument2(iface);
FIXME("(%p)->(%p)\n", This, p); nsIDOMHTMLCollection *nscoll = NULL;
return E_NOTIMPL; nsresult nsres;
TRACE("(%p)->(%p)\n", This, p);
if(!p)
return E_INVALIDARG;
*p = NULL;
if(!This->doc_node->nsdoc) {
WARN("NULL nsdoc\n");
return E_UNEXPECTED;
}
nsres = nsIDOMHTMLDocument_GetScripts(This->doc_node->nsdoc, &nscoll);
if(NS_FAILED(nsres)) {
ERR("GetImages failed: %08x\n", nsres);
return E_FAIL;
}
if(nscoll) {
*p = create_collection_from_htmlcol(This->doc_node, nscoll);
nsIDOMHTMLCollection_Release(nscoll);
}
return S_OK;
} }
static HRESULT WINAPI HTMLDocument_put_designMode(IHTMLDocument2 *iface, BSTR v) static HRESULT WINAPI HTMLDocument_put_designMode(IHTMLDocument2 *iface, BSTR v)
{ {
HTMLDocument *This = impl_from_IHTMLDocument2(iface); HTMLDocument *This = impl_from_IHTMLDocument2(iface);
FIXME("(%p)->(%s)\n", This, debugstr_w(v)); HRESULT hres;
return E_NOTIMPL;
static const WCHAR onW[] = {'o','n',0};
TRACE("(%p)->(%s)\n", This, debugstr_w(v));
if(strcmpiW(v, onW)) {
FIXME("Unsupported arg %s\n", debugstr_w(v));
return E_NOTIMPL;
}
hres = setup_edit_mode(This->doc_obj);
if(FAILED(hres))
return hres;
call_property_onchanged(&This->cp_container, DISPID_IHTMLDOCUMENT2_DESIGNMODE);
return S_OK;
} }
static HRESULT WINAPI HTMLDocument_get_designMode(IHTMLDocument2 *iface, BSTR *p) static HRESULT WINAPI HTMLDocument_get_designMode(IHTMLDocument2 *iface, BSTR *p)
@ -696,7 +736,7 @@ static HRESULT WINAPI HTMLDocument_get_cookie(IHTMLDocument2 *iface, BSTR *p)
return S_OK; return S_OK;
} }
*p = SysAllocStringLen(NULL, size-1); *p = SysAllocStringLen(NULL, size/sizeof(WCHAR)-1);
if(!*p) if(!*p)
return E_OUTOFMEMORY; return E_OUTOFMEMORY;
@ -821,6 +861,7 @@ static HRESULT WINAPI HTMLDocument_get_nameProp(IHTMLDocument2 *iface, BSTR *p)
static HRESULT document_write(HTMLDocument *This, SAFEARRAY *psarray, BOOL ln) static HRESULT document_write(HTMLDocument *This, SAFEARRAY *psarray, BOOL ln)
{ {
VARIANT *var, tmp; VARIANT *var, tmp;
JSContext *jsctx;
nsAString nsstr; nsAString nsstr;
ULONG i, argc; ULONG i, argc;
nsresult nsres; nsresult nsres;
@ -847,6 +888,7 @@ static HRESULT document_write(HTMLDocument *This, SAFEARRAY *psarray, BOOL ln)
V_VT(&tmp) = VT_EMPTY; V_VT(&tmp) = VT_EMPTY;
jsctx = get_context_from_document(This->doc_node->nsdoc);
argc = psarray->rgsabound[0].cElements; argc = psarray->rgsabound[0].cElements;
for(i=0; i < argc; i++) { for(i=0; i < argc; i++) {
if(V_VT(var+i) == VT_BSTR) { if(V_VT(var+i) == VT_BSTR) {
@ -861,9 +903,9 @@ static HRESULT document_write(HTMLDocument *This, SAFEARRAY *psarray, BOOL ln)
} }
if(!ln || i != argc-1) if(!ln || i != argc-1)
nsres = nsIDOMHTMLDocument_Write(This->doc_node->nsdoc, &nsstr, NULL /* FIXME! */); nsres = nsIDOMHTMLDocument_Write(This->doc_node->nsdoc, &nsstr, jsctx);
else else
nsres = nsIDOMHTMLDocument_Writeln(This->doc_node->nsdoc, &nsstr, NULL /* FIXME! */); nsres = nsIDOMHTMLDocument_Writeln(This->doc_node->nsdoc, &nsstr, jsctx);
nsAString_Finish(&nsstr); nsAString_Finish(&nsstr);
if(V_VT(var+i) != VT_BSTR) if(V_VT(var+i) != VT_BSTR)
VariantClear(&tmp); VariantClear(&tmp);
@ -918,7 +960,8 @@ static HRESULT WINAPI HTMLDocument_open(IHTMLDocument2 *iface, BSTR url, VARIANT
|| V_VT(&features) != VT_ERROR || V_VT(&replace) != VT_ERROR) || V_VT(&features) != VT_ERROR || V_VT(&replace) != VT_ERROR)
FIXME("unsupported args\n"); FIXME("unsupported args\n");
nsres = nsIDOMHTMLDocument_Open(This->doc_node->nsdoc, NULL, NULL, NULL, NULL, 0, &tmp); nsres = nsIDOMHTMLDocument_Open(This->doc_node->nsdoc, NULL, NULL, NULL,
get_context_from_document(This->doc_node->nsdoc), 0, &tmp);
if(NS_FAILED(nsres)) { if(NS_FAILED(nsres)) {
ERR("Open failed: %08x\n", nsres); ERR("Open failed: %08x\n", nsres);
return E_FAIL; return E_FAIL;

View file

@ -985,6 +985,7 @@ static HRESULT WINAPI HTMLElement2_get_dir(IHTMLElement2 *iface, BSTR *p)
return S_OK; return S_OK;
} }
nsAString_Init(&dir_str, NULL);
nsres = nsIDOMHTMLElement_GetDir(This->nselem, &dir_str); nsres = nsIDOMHTMLElement_GetDir(This->nselem, &dir_str);
return return_nsstr(nsres, &dir_str, p); return return_nsstr(nsres, &dir_str, p);
} }
@ -1256,22 +1257,22 @@ static HRESULT WINAPI HTMLElement2_getElementsByTagName(IHTMLElement2 *iface, BS
IHTMLElementCollection **pelColl) IHTMLElementCollection **pelColl)
{ {
HTMLElement *This = impl_from_IHTMLElement2(iface); HTMLElement *This = impl_from_IHTMLElement2(iface);
nsIDOMNodeList *nslist; nsIDOMHTMLCollection *nscol;
nsAString tag_str; nsAString tag_str;
nsresult nsres; nsresult nsres;
TRACE("(%p)->(%s %p)\n", This, debugstr_w(v), pelColl); TRACE("(%p)->(%s %p)\n", This, debugstr_w(v), pelColl);
nsAString_InitDepend(&tag_str, v); nsAString_InitDepend(&tag_str, v);
nsres = nsIDOMHTMLElement_GetElementsByTagName(This->nselem, &tag_str, &nslist); nsres = nsIDOMHTMLElement_GetElementsByTagName(This->nselem, &tag_str, &nscol);
nsAString_Finish(&tag_str); nsAString_Finish(&tag_str);
if(NS_FAILED(nsres)) { if(NS_FAILED(nsres)) {
ERR("GetElementByTagName failed: %08x\n", nsres); ERR("GetElementByTagName failed: %08x\n", nsres);
return E_FAIL; return E_FAIL;
} }
*pelColl = create_collection_from_nodelist(This->node.doc, nslist); *pelColl = create_collection_from_htmlcol(This->node.doc, nscol);
nsIDOMNodeList_Release(nslist); nsIDOMHTMLCollection_Release(nscol);
return S_OK; return S_OK;
} }

View file

@ -46,6 +46,8 @@ typedef struct {
nsIDOMHTMLInputElement *nsinput; nsIDOMHTMLInputElement *nsinput;
} HTMLInputElement; } HTMLInputElement;
static const WCHAR forW[] = {'f','o','r',0};
static inline HTMLInputElement *impl_from_IHTMLInputElement(IHTMLInputElement *iface) static inline HTMLInputElement *impl_from_IHTMLInputElement(IHTMLInputElement *iface)
{ {
return CONTAINING_RECORD(iface, HTMLInputElement, IHTMLInputElement_iface); return CONTAINING_RECORD(iface, HTMLInputElement, IHTMLInputElement_iface);
@ -1314,15 +1316,50 @@ static HRESULT WINAPI HTMLLabelElement_Invoke(IHTMLLabelElement *iface, DISPID d
static HRESULT WINAPI HTMLLabelElement_put_htmlFor(IHTMLLabelElement *iface, BSTR v) static HRESULT WINAPI HTMLLabelElement_put_htmlFor(IHTMLLabelElement *iface, BSTR v)
{ {
HTMLLabelElement *This = impl_from_IHTMLLabelElement(iface); HTMLLabelElement *This = impl_from_IHTMLLabelElement(iface);
FIXME("(%p)->(%s)\n", This, debugstr_w(v)); nsAString for_str, val_str;
return E_NOTIMPL; nsresult nsres;
TRACE("(%p)->(%s)\n", This, debugstr_w(v));
nsAString_InitDepend(&for_str, forW);
nsAString_InitDepend(&val_str, v);
nsres = nsIDOMHTMLElement_SetAttribute(This->element.nselem, &for_str, &val_str);
nsAString_Finish(&for_str);
nsAString_Finish(&val_str);
if(NS_FAILED(nsres)) {
ERR("SetAttribute failed: %08x\n", nsres);
return E_FAIL;
}
return S_OK;
} }
static HRESULT WINAPI HTMLLabelElement_get_htmlFor(IHTMLLabelElement *iface, BSTR *p) static HRESULT WINAPI HTMLLabelElement_get_htmlFor(IHTMLLabelElement *iface, BSTR *p)
{ {
HTMLLabelElement *This = impl_from_IHTMLLabelElement(iface); HTMLLabelElement *This = impl_from_IHTMLLabelElement(iface);
FIXME("(%p)->(%p)\n", This, p); nsAString for_str, val_str;
return E_NOTIMPL; nsresult nsres;
HRESULT hres;
TRACE("(%p)->(%p)\n", This, p);
nsAString_InitDepend(&for_str, forW);
nsAString_Init(&val_str, NULL);
nsres = nsIDOMHTMLElement_GetAttribute(This->element.nselem, &for_str, &val_str);
nsAString_Finish(&for_str);
if(NS_SUCCEEDED(nsres)) {
const PRUnichar *val;
nsAString_GetData(&val_str, &val);
*p = SysAllocString(val);
hres = *p ? S_OK : E_OUTOFMEMORY;
}else {
ERR("GetAttribute failed: %08x\n", nsres);
hres = E_FAIL;
}
nsAString_Finish(&val_str);
return hres;
} }
static HRESULT WINAPI HTMLLabelElement_put_accessKey(IHTMLLabelElement *iface, BSTR v) static HRESULT WINAPI HTMLLabelElement_put_accessKey(IHTMLLabelElement *iface, BSTR v)
@ -1420,6 +1457,8 @@ typedef struct {
HTMLElement element; HTMLElement element;
IHTMLButtonElement IHTMLButtonElement_iface; IHTMLButtonElement IHTMLButtonElement_iface;
nsIDOMHTMLButtonElement *nsbutton;
} HTMLButtonElement; } HTMLButtonElement;
static inline HTMLButtonElement *impl_from_IHTMLButtonElement(IHTMLButtonElement *iface) static inline HTMLButtonElement *impl_from_IHTMLButtonElement(IHTMLButtonElement *iface)
@ -1507,15 +1546,33 @@ static HRESULT WINAPI HTMLButtonElement_get_value(IHTMLButtonElement *iface, BST
static HRESULT WINAPI HTMLButtonElement_put_name(IHTMLButtonElement *iface, BSTR v) static HRESULT WINAPI HTMLButtonElement_put_name(IHTMLButtonElement *iface, BSTR v)
{ {
HTMLButtonElement *This = impl_from_IHTMLButtonElement(iface); HTMLButtonElement *This = impl_from_IHTMLButtonElement(iface);
FIXME("(%p)->(%s)\n", This, debugstr_w(v)); nsAString name_str;
return E_NOTIMPL; nsresult nsres;
TRACE("(%p)->(%s)\n", This, debugstr_w(v));
nsAString_InitDepend(&name_str, v);
nsres = nsIDOMHTMLButtonElement_SetName(This->nsbutton, &name_str);
nsAString_Finish(&name_str);
if(NS_FAILED(nsres)) {
ERR("SetName failed: %08x\n", nsres);
return E_FAIL;
}
return S_OK;
} }
static HRESULT WINAPI HTMLButtonElement_get_name(IHTMLButtonElement *iface, BSTR *p) static HRESULT WINAPI HTMLButtonElement_get_name(IHTMLButtonElement *iface, BSTR *p)
{ {
HTMLButtonElement *This = impl_from_IHTMLButtonElement(iface); HTMLButtonElement *This = impl_from_IHTMLButtonElement(iface);
FIXME("(%p)->(%p)\n", This, p); nsAString name_str;
return E_NOTIMPL; nsresult nsres;
TRACE("(%p)->(%p)\n", This, p);
nsAString_Init(&name_str, NULL);
nsres = nsIDOMHTMLButtonElement_GetName(This->nsbutton, &name_str);
return return_nsstr(nsres, &name_str, p);
} }
static HRESULT WINAPI HTMLButtonElement_put_status(IHTMLButtonElement *iface, VARIANT v) static HRESULT WINAPI HTMLButtonElement_put_status(IHTMLButtonElement *iface, VARIANT v)
@ -1535,15 +1592,35 @@ static HRESULT WINAPI HTMLButtonElement_get_status(IHTMLButtonElement *iface, VA
static HRESULT WINAPI HTMLButtonElement_put_disabled(IHTMLButtonElement *iface, VARIANT_BOOL v) static HRESULT WINAPI HTMLButtonElement_put_disabled(IHTMLButtonElement *iface, VARIANT_BOOL v)
{ {
HTMLButtonElement *This = impl_from_IHTMLButtonElement(iface); HTMLButtonElement *This = impl_from_IHTMLButtonElement(iface);
FIXME("(%p)->(%x)\n", This, v); nsresult nsres;
return E_NOTIMPL;
TRACE("(%p)->(%x)\n", This, v);
nsres = nsIDOMHTMLButtonElement_SetDisabled(This->nsbutton, !!v);
if(NS_FAILED(nsres)) {
ERR("SetDisabled failed: %08x\n", nsres);
return E_FAIL;
}
return S_OK;
} }
static HRESULT WINAPI HTMLButtonElement_get_disabled(IHTMLButtonElement *iface, VARIANT_BOOL *p) static HRESULT WINAPI HTMLButtonElement_get_disabled(IHTMLButtonElement *iface, VARIANT_BOOL *p)
{ {
HTMLButtonElement *This = impl_from_IHTMLButtonElement(iface); HTMLButtonElement *This = impl_from_IHTMLButtonElement(iface);
FIXME("(%p)->(%p)\n", This, p); cpp_bool disabled;
return E_NOTIMPL; nsresult nsres;
TRACE("(%p)->(%p)\n", This, p);
nsres = nsIDOMHTMLButtonElement_GetDisabled(This->nsbutton, &disabled);
if(NS_FAILED(nsres)) {
ERR("GetDisabled failed: %08x\n", nsres);
return E_FAIL;
}
*p = disabled ? VARIANT_TRUE : VARIANT_FALSE;
return S_OK;
} }
static HRESULT WINAPI HTMLButtonElement_get_form(IHTMLButtonElement *iface, IHTMLFormElement **p) static HRESULT WINAPI HTMLButtonElement_get_form(IHTMLButtonElement *iface, IHTMLFormElement **p)
@ -1606,6 +1683,18 @@ static HRESULT HTMLButtonElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv)
return S_OK; return S_OK;
} }
static HRESULT HTMLButtonElementImpl_put_disabled(HTMLDOMNode *iface, VARIANT_BOOL v)
{
HTMLButtonElement *This = button_from_HTMLDOMNode(iface);
return IHTMLButtonElement_put_disabled(&This->IHTMLButtonElement_iface, v);
}
static HRESULT HTMLButtonElementImpl_get_disabled(HTMLDOMNode *iface, VARIANT_BOOL *p)
{
HTMLButtonElement *This = button_from_HTMLDOMNode(iface);
return IHTMLButtonElement_get_disabled(&This->IHTMLButtonElement_iface, p);
}
static const NodeImplVtbl HTMLButtonElementImplVtbl = { static const NodeImplVtbl HTMLButtonElementImplVtbl = {
HTMLButtonElement_QI, HTMLButtonElement_QI,
HTMLElement_destructor, HTMLElement_destructor,
@ -1613,6 +1702,10 @@ static const NodeImplVtbl HTMLButtonElementImplVtbl = {
HTMLElement_clone, HTMLElement_clone,
HTMLElement_handle_event, HTMLElement_handle_event,
HTMLElement_get_attr_col, HTMLElement_get_attr_col,
NULL,
NULL,
HTMLButtonElementImpl_put_disabled,
HTMLButtonElementImpl_get_disabled
}; };
static const tid_t HTMLButtonElement_iface_tids[] = { static const tid_t HTMLButtonElement_iface_tids[] = {
@ -1631,8 +1724,7 @@ static dispex_static_data_t HTMLButtonElement_dispex = {
HRESULT HTMLButtonElement_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem, HTMLElement **elem) HRESULT HTMLButtonElement_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem, HTMLElement **elem)
{ {
HTMLButtonElement *ret; HTMLButtonElement *ret;
nsresult nsres;
ERR("!!!\n");
ret = heap_alloc_zero(sizeof(*ret)); ret = heap_alloc_zero(sizeof(*ret));
if(!ret) if(!ret)
@ -1642,6 +1734,13 @@ HRESULT HTMLButtonElement_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nsele
ret->element.node.vtbl = &HTMLButtonElementImplVtbl; ret->element.node.vtbl = &HTMLButtonElementImplVtbl;
HTMLElement_Init(&ret->element, doc, nselem, &HTMLButtonElement_dispex); HTMLElement_Init(&ret->element, doc, nselem, &HTMLButtonElement_dispex);
nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLButtonElement, (void**)&ret->nsbutton);
/* Share nsbutton reference with nsnode */
assert(nsres == NS_OK && (nsIDOMNode*)ret->nsbutton == ret->element.node.nsnode);
nsIDOMNode_Release(ret->element.node.nsnode);
*elem = &ret->element; *elem = &ret->element;
return S_OK; return S_OK;
} }

View file

@ -1215,6 +1215,7 @@ HRESULT get_node(HTMLDocumentNode *This, nsIDOMNode *nsnode, BOOL create, HTMLDO
if(unk) { if(unk) {
*ret = get_node_obj((IHTMLDOMNode*)unk); *ret = get_node_obj((IHTMLDOMNode*)unk);
nsISupports_Release(unk);
return NS_OK; return NS_OK;
} }

View file

@ -98,8 +98,7 @@ static ULONG WINAPI HTMLStorage_Release(IHTMLStorage *iface)
static HRESULT WINAPI HTMLStorage_GetTypeInfoCount(IHTMLStorage *iface, UINT *pctinfo) static HRESULT WINAPI HTMLStorage_GetTypeInfoCount(IHTMLStorage *iface, UINT *pctinfo)
{ {
HTMLStorage *This = impl_from_IHTMLStorage(iface); HTMLStorage *This = impl_from_IHTMLStorage(iface);
FIXME("(%p)->(%p)\n", This, pctinfo); return IDispatchEx_GetTypeInfoCount(&This->dispex.IDispatchEx_iface, pctinfo);
return E_NOTIMPL;
} }
static HRESULT WINAPI HTMLStorage_GetTypeInfo(IHTMLStorage *iface, UINT iTInfo, static HRESULT WINAPI HTMLStorage_GetTypeInfo(IHTMLStorage *iface, UINT iTInfo,

View file

@ -174,6 +174,8 @@ static const WCHAR attrVerticalAlign[] =
{'v','e','r','t','i','c','a','l','-','a','l','i','g','n',0}; {'v','e','r','t','i','c','a','l','-','a','l','i','g','n',0};
static const WCHAR attrVisibility[] = static const WCHAR attrVisibility[] =
{'v','i','s','i','b','i','l','i','t','y',0}; {'v','i','s','i','b','i','l','i','t','y',0};
static const WCHAR attrWhiteSpace[] =
{'w','h','i','t','e','-','s','p','a','c','e',0};
static const WCHAR attrWidth[] = static const WCHAR attrWidth[] =
{'w','i','d','t','h',0}; {'w','i','d','t','h',0};
static const WCHAR attrWordSpacing[] = static const WCHAR attrWordSpacing[] =
@ -260,6 +262,7 @@ static const style_tbl_entry_t style_tbl[] = {
{attrTop, DISPID_IHTMLSTYLE_TOP}, {attrTop, DISPID_IHTMLSTYLE_TOP},
{attrVerticalAlign, DISPID_IHTMLSTYLE_VERTICALALIGN}, {attrVerticalAlign, DISPID_IHTMLSTYLE_VERTICALALIGN},
{attrVisibility, DISPID_IHTMLSTYLE_VISIBILITY}, {attrVisibility, DISPID_IHTMLSTYLE_VISIBILITY},
{attrWhiteSpace, DISPID_IHTMLSTYLE_WHITESPACE},
{attrWidth, DISPID_IHTMLSTYLE_WIDTH}, {attrWidth, DISPID_IHTMLSTYLE_WIDTH},
{attrWordSpacing, DISPID_IHTMLSTYLE_WORDSPACING}, {attrWordSpacing, DISPID_IHTMLSTYLE_WORDSPACING},
{attrWordWrap, DISPID_IHTMLSTYLE3_WORDWRAP}, {attrWordWrap, DISPID_IHTMLSTYLE3_WORDWRAP},
@ -2217,15 +2220,19 @@ static HRESULT WINAPI HTMLStyle_get_listStyle(IHTMLStyle *iface, BSTR *p)
static HRESULT WINAPI HTMLStyle_put_whiteSpace(IHTMLStyle *iface, BSTR v) static HRESULT WINAPI HTMLStyle_put_whiteSpace(IHTMLStyle *iface, BSTR v)
{ {
HTMLStyle *This = impl_from_IHTMLStyle(iface); HTMLStyle *This = impl_from_IHTMLStyle(iface);
FIXME("(%p)->(%s)\n", This, debugstr_w(v));
return E_NOTIMPL; TRACE("(%p)->(%s)\n", This, debugstr_w(v));
return set_nsstyle_attr(This->nsstyle, STYLEID_WHITE_SPACE, v, 0);
} }
static HRESULT WINAPI HTMLStyle_get_whiteSpace(IHTMLStyle *iface, BSTR *p) static HRESULT WINAPI HTMLStyle_get_whiteSpace(IHTMLStyle *iface, BSTR *p)
{ {
HTMLStyle *This = impl_from_IHTMLStyle(iface); HTMLStyle *This = impl_from_IHTMLStyle(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL; TRACE("(%p)->(%p)\n", This, p);
return get_nsstyle_attr(This->nsstyle, STYLEID_WHITE_SPACE, p, 0);
} }
static HRESULT WINAPI HTMLStyle_put_top(IHTMLStyle *iface, VARIANT v) static HRESULT WINAPI HTMLStyle_put_top(IHTMLStyle *iface, VARIANT v)

View file

@ -101,6 +101,7 @@ typedef enum {
STYLEID_TOP, STYLEID_TOP,
STYLEID_VERTICAL_ALIGN, STYLEID_VERTICAL_ALIGN,
STYLEID_VISIBILITY, STYLEID_VISIBILITY,
STYLEID_WHITE_SPACE,
STYLEID_WIDTH, STYLEID_WIDTH,
STYLEID_WORD_SPACING, STYLEID_WORD_SPACING,
STYLEID_WORD_WRAP, STYLEID_WORD_WRAP,

View file

@ -35,6 +35,7 @@
WINE_DEFAULT_DEBUG_CHANNEL(mshtml); WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
struct HTMLStyleSheet { struct HTMLStyleSheet {
DispatchEx dispex;
IHTMLStyleSheet IHTMLStyleSheet_iface; IHTMLStyleSheet IHTMLStyleSheet_iface;
LONG ref; LONG ref;
@ -415,6 +416,8 @@ static HRESULT WINAPI HTMLStyleSheet_QueryInterface(IHTMLStyleSheet *iface, REFI
}else if(IsEqualGUID(&IID_IHTMLStyleSheet, riid)) { }else if(IsEqualGUID(&IID_IHTMLStyleSheet, riid)) {
TRACE("(%p)->(IID_IHTMLStyleSheet %p)\n", This, ppv); TRACE("(%p)->(IID_IHTMLStyleSheet %p)\n", This, ppv);
*ppv = &This->IHTMLStyleSheet_iface; *ppv = &This->IHTMLStyleSheet_iface;
}else if(dispex_query_interface(&This->dispex, riid, ppv)) {
return *ppv ? S_OK : E_NOINTERFACE;
} }
if(*ppv) { if(*ppv) {
@ -452,16 +455,16 @@ static ULONG WINAPI HTMLStyleSheet_Release(IHTMLStyleSheet *iface)
static HRESULT WINAPI HTMLStyleSheet_GetTypeInfoCount(IHTMLStyleSheet *iface, UINT *pctinfo) static HRESULT WINAPI HTMLStyleSheet_GetTypeInfoCount(IHTMLStyleSheet *iface, UINT *pctinfo)
{ {
HTMLStyleSheet *This = impl_from_IHTMLStyleSheet(iface); HTMLStyleSheet *This = impl_from_IHTMLStyleSheet(iface);
FIXME("(%p)->(%p)\n", This, pctinfo); TRACE("(%p)->(%p)\n", This, pctinfo);
return E_NOTIMPL; return IDispatchEx_GetTypeInfoCount(&This->dispex.IDispatchEx_iface, pctinfo);
} }
static HRESULT WINAPI HTMLStyleSheet_GetTypeInfo(IHTMLStyleSheet *iface, UINT iTInfo, static HRESULT WINAPI HTMLStyleSheet_GetTypeInfo(IHTMLStyleSheet *iface, UINT iTInfo,
LCID lcid, ITypeInfo **ppTInfo) LCID lcid, ITypeInfo **ppTInfo)
{ {
HTMLStyleSheet *This = impl_from_IHTMLStyleSheet(iface); HTMLStyleSheet *This = impl_from_IHTMLStyleSheet(iface);
FIXME("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ppTInfo); TRACE("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ppTInfo);
return E_NOTIMPL; return IDispatchEx_GetTypeInfo(&This->dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
} }
static HRESULT WINAPI HTMLStyleSheet_GetIDsOfNames(IHTMLStyleSheet *iface, REFIID riid, static HRESULT WINAPI HTMLStyleSheet_GetIDsOfNames(IHTMLStyleSheet *iface, REFIID riid,
@ -469,9 +472,8 @@ static HRESULT WINAPI HTMLStyleSheet_GetIDsOfNames(IHTMLStyleSheet *iface, REFII
LCID lcid, DISPID *rgDispId) LCID lcid, DISPID *rgDispId)
{ {
HTMLStyleSheet *This = impl_from_IHTMLStyleSheet(iface); HTMLStyleSheet *This = impl_from_IHTMLStyleSheet(iface);
FIXME("(%p)->(%s %p %u %u %p)\n", This, debugstr_guid(riid), rgszNames, cNames, TRACE("(%p)->(%s %p %u %u %p)\n", This, debugstr_guid(riid), rgszNames, cNames, lcid, rgDispId);
lcid, rgDispId); return IDispatchEx_GetIDsOfNames(&This->dispex.IDispatchEx_iface, riid, rgszNames, cNames, lcid, rgDispId);
return E_NOTIMPL;
} }
static HRESULT WINAPI HTMLStyleSheet_Invoke(IHTMLStyleSheet *iface, DISPID dispIdMember, static HRESULT WINAPI HTMLStyleSheet_Invoke(IHTMLStyleSheet *iface, DISPID dispIdMember,
@ -479,9 +481,10 @@ static HRESULT WINAPI HTMLStyleSheet_Invoke(IHTMLStyleSheet *iface, DISPID dispI
VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr) VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
{ {
HTMLStyleSheet *This = impl_from_IHTMLStyleSheet(iface); HTMLStyleSheet *This = impl_from_IHTMLStyleSheet(iface);
FIXME("(%p)->(%d %s %d %d %p %p %p %p)\n", This, dispIdMember, debugstr_guid(riid), TRACE("(%p)->(%d %s %d %d %p %p %p %p)\n", This, dispIdMember, debugstr_guid(riid),
lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr); lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
return E_NOTIMPL; return IDispatchEx_Invoke(&This->dispex.IDispatchEx_iface, dispIdMember, riid, lcid, wFlags, pDispParams,
pVarResult, pExcepInfo, puArgErr);
} }
static HRESULT WINAPI HTMLStyleSheet_put_title(IHTMLStyleSheet *iface, BSTR v) static HRESULT WINAPI HTMLStyleSheet_put_title(IHTMLStyleSheet *iface, BSTR v)
@ -679,6 +682,17 @@ static const IHTMLStyleSheetVtbl HTMLStyleSheetVtbl = {
HTMLStyleSheet_get_rules HTMLStyleSheet_get_rules
}; };
static const tid_t HTMLStyleSheet_iface_tids[] = {
IHTMLStyleSheet_tid,
0
};
static dispex_static_data_t HTMLStyleSheet_dispex = {
NULL,
DispHTMLStyleSheet_tid,
NULL,
HTMLStyleSheet_iface_tids
};
IHTMLStyleSheet *HTMLStyleSheet_Create(nsIDOMStyleSheet *nsstylesheet) IHTMLStyleSheet *HTMLStyleSheet_Create(nsIDOMStyleSheet *nsstylesheet)
{ {
HTMLStyleSheet *ret = heap_alloc(sizeof(HTMLStyleSheet)); HTMLStyleSheet *ret = heap_alloc(sizeof(HTMLStyleSheet));
@ -688,6 +702,8 @@ IHTMLStyleSheet *HTMLStyleSheet_Create(nsIDOMStyleSheet *nsstylesheet)
ret->ref = 1; ret->ref = 1;
ret->nsstylesheet = NULL; ret->nsstylesheet = NULL;
init_dispex(&ret->dispex, (IUnknown*)&ret->IHTMLStyleSheet_iface, &HTMLStyleSheet_dispex);
if(nsstylesheet) { if(nsstylesheet) {
nsres = nsIDOMStyleSheet_QueryInterface(nsstylesheet, &IID_nsIDOMCSSStyleSheet, nsres = nsIDOMStyleSheet_QueryInterface(nsstylesheet, &IID_nsIDOMCSSStyleSheet,
(void**)&ret->nsstylesheet); (void**)&ret->nsstylesheet);

View file

@ -173,15 +173,49 @@ static HRESULT WINAPI HTMLTable_get_rules(IHTMLTable *iface, BSTR *p)
static HRESULT WINAPI HTMLTable_put_cellSpacing(IHTMLTable *iface, VARIANT v) static HRESULT WINAPI HTMLTable_put_cellSpacing(IHTMLTable *iface, VARIANT v)
{ {
HTMLTable *This = impl_from_IHTMLTable(iface); HTMLTable *This = impl_from_IHTMLTable(iface);
FIXME("(%p)->(%s)\n", This, debugstr_variant(&v)); nsAString nsstr;
return E_NOTIMPL; WCHAR buf[64];
nsresult nsres;
TRACE("(%p)->(%s)\n", This, debugstr_variant(&v));
switch(V_VT(&v)) {
case VT_BSTR:
nsAString_InitDepend(&nsstr, V_BSTR(&v));
break;
case VT_I4: {
static const WCHAR formatW[] = {'%','d',0};
sprintfW(buf, formatW, V_I4(&v));
nsAString_InitDepend(&nsstr, buf);
break;
}
default:
FIXME("unsupported arg %s\n", debugstr_variant(&v));
return E_NOTIMPL;
}
nsres = nsIDOMHTMLTableElement_SetCellSpacing(This->nstable, &nsstr);
nsAString_Finish(&nsstr);
if(NS_FAILED(nsres)) {
ERR("SetCellSpacing failed: %08x\n", nsres);
return E_FAIL;
}
return S_OK;
} }
static HRESULT WINAPI HTMLTable_get_cellSpacing(IHTMLTable *iface, VARIANT *p) static HRESULT WINAPI HTMLTable_get_cellSpacing(IHTMLTable *iface, VARIANT *p)
{ {
HTMLTable *This = impl_from_IHTMLTable(iface); HTMLTable *This = impl_from_IHTMLTable(iface);
FIXME("(%p)->(%p)\n", This, p); nsAString nsstr;
return E_NOTIMPL; nsresult nsres;
TRACE("(%p)->(%p)\n", This, p);
nsAString_Init(&nsstr, NULL);
nsres = nsIDOMHTMLTableElement_GetCellSpacing(This->nstable, &nsstr);
V_VT(p) = VT_BSTR;
return return_nsstr(nsres, &nsstr, &V_BSTR(p));
} }
static HRESULT WINAPI HTMLTable_put_cellPadding(IHTMLTable *iface, VARIANT v) static HRESULT WINAPI HTMLTable_put_cellPadding(IHTMLTable *iface, VARIANT v)
@ -382,8 +416,21 @@ static HRESULT WINAPI HTMLTable_get_tFoot(IHTMLTable *iface, IHTMLTableSection *
static HRESULT WINAPI HTMLTable_get_tBodies(IHTMLTable *iface, IHTMLElementCollection **p) static HRESULT WINAPI HTMLTable_get_tBodies(IHTMLTable *iface, IHTMLElementCollection **p)
{ {
HTMLTable *This = impl_from_IHTMLTable(iface); HTMLTable *This = impl_from_IHTMLTable(iface);
FIXME("(%p)->(%p)\n", This, p); nsIDOMHTMLCollection *nscol = NULL;
return E_NOTIMPL; nsresult nsres;
TRACE("(%p)->(%p)\n", This, p);
nsres = nsIDOMHTMLTableElement_GetTBodies(This->nstable, &nscol);
if(NS_FAILED(nsres)) {
ERR("GetTBodies failed: %08x\n", nsres);
return E_FAIL;
}
*p = create_collection_from_htmlcol(This->element.node.doc, nscol);
nsIDOMHTMLCollection_Release(nscol);
return S_OK;
} }
static HRESULT WINAPI HTMLTable_get_caption(IHTMLTable *iface, IHTMLTableCaption **p) static HRESULT WINAPI HTMLTable_get_caption(IHTMLTable *iface, IHTMLTableCaption **p)

View file

@ -103,15 +103,28 @@ static HRESULT WINAPI HTMLDOMTextNode_Invoke(IHTMLDOMTextNode *iface, DISPID dis
static HRESULT WINAPI HTMLDOMTextNode_put_data(IHTMLDOMTextNode *iface, BSTR v) static HRESULT WINAPI HTMLDOMTextNode_put_data(IHTMLDOMTextNode *iface, BSTR v)
{ {
HTMLDOMTextNode *This = impl_from_IHTMLDOMTextNode(iface); HTMLDOMTextNode *This = impl_from_IHTMLDOMTextNode(iface);
FIXME("(%p)->(%s)\n", This, debugstr_w(v)); nsAString nsstr;
return E_NOTIMPL; nsresult nsres;
TRACE("(%p)->(%s)\n", This, debugstr_w(v));
nsAString_InitDepend(&nsstr, v);
nsres = nsIDOMText_SetData(This->nstext, &nsstr);
nsAString_Finish(&nsstr);
return NS_SUCCEEDED(nsres) ? S_OK : E_FAIL;
} }
static HRESULT WINAPI HTMLDOMTextNode_get_data(IHTMLDOMTextNode *iface, BSTR *p) static HRESULT WINAPI HTMLDOMTextNode_get_data(IHTMLDOMTextNode *iface, BSTR *p)
{ {
HTMLDOMTextNode *This = impl_from_IHTMLDOMTextNode(iface); HTMLDOMTextNode *This = impl_from_IHTMLDOMTextNode(iface);
FIXME("(%p)->(%p)\n", This, p); nsAString nsstr;
return E_NOTIMPL; nsresult nsres;
TRACE("(%p)->(%p)\n", This, p);
nsAString_Init(&nsstr, NULL);
nsres = nsIDOMText_GetData(This->nstext, &nsstr);
return return_nsstr(nsres, &nsstr, p);
} }
static HRESULT WINAPI HTMLDOMTextNode_toString(IHTMLDOMTextNode *iface, BSTR *String) static HRESULT WINAPI HTMLDOMTextNode_toString(IHTMLDOMTextNode *iface, BSTR *String)

View file

@ -30,7 +30,8 @@
#include <ole2.h> #include <ole2.h>
#include <mshtmdid.h> #include <mshtmdid.h>
#include <shlguid.h> #include <shlguid.h>
#include "shobjidl.h" #include <shobjidl.h>
#include <exdispid.h>
#define NO_SHLWAPI_REG #define NO_SHLWAPI_REG
#include "shlwapi.h" #include "shlwapi.h"
@ -176,6 +177,9 @@ static HRESULT WINAPI HTMLWindow2_QueryInterface(IHTMLWindow2 *iface, REFIID rii
}else if(IsEqualGUID(&IID_ITravelLogClient, riid)) { }else if(IsEqualGUID(&IID_ITravelLogClient, riid)) {
TRACE("(%p)->(IID_ITravelLogClient %p)\n", This, ppv); TRACE("(%p)->(IID_ITravelLogClient %p)\n", This, ppv);
*ppv = &This->ITravelLogClient_iface; *ppv = &This->ITravelLogClient_iface;
}else if(IsEqualGUID(&IID_IObjectIdentity, riid)) {
TRACE("(%p)->(IID_IObjectIdentity %p)\n", This, ppv);
*ppv = &This->IObjectIdentity_iface;
}else if(dispex_query_interface(&This->inner_window->dispex, riid, ppv)) { }else if(dispex_query_interface(&This->inner_window->dispex, riid, ppv)) {
assert(!*ppv); assert(!*ppv);
return E_NOINTERFACE; return E_NOINTERFACE;
@ -266,8 +270,12 @@ static void release_inner_window(HTMLInnerWindow *This)
if(This->screen) if(This->screen)
IHTMLScreen_Release(This->screen); IHTMLScreen_Release(This->screen);
if(This->history)
IOmHistory_Release(This->history); if(This->history) {
This->history->window = NULL;
IOmHistory_Release(&This->history->IOmHistory_iface);
}
if(This->mon) if(This->mon)
IMoniker_Release(This->mon); IMoniker_Release(This->mon);
@ -765,20 +773,89 @@ static HRESULT WINAPI HTMLWindow2_get_history(IHTMLWindow2 *iface, IOmHistory **
if(!window->history) { if(!window->history) {
HRESULT hres; HRESULT hres;
hres = create_history(&window->history); hres = create_history(window, &window->history);
if(FAILED(hres)) if(FAILED(hres))
return hres; return hres;
} }
IOmHistory_AddRef(window->history); IOmHistory_AddRef(&window->history->IOmHistory_iface);
*p = window->history; *p = &window->history->IOmHistory_iface;
return S_OK; return S_OK;
} }
static BOOL notify_webbrowser_close(HTMLOuterWindow *window, HTMLDocumentObj *doc)
{
IConnectionPointContainer *cp_container;
VARIANT_BOOL cancel = VARIANT_FALSE;
IEnumConnections *enum_conn;
VARIANT args[2];
DISPPARAMS dp = {args, NULL, 2, 0};
CONNECTDATA conn_data;
IConnectionPoint *cp;
IDispatch *disp;
ULONG fetched;
HRESULT hres;
if(!doc->webbrowser)
return TRUE;
hres = IUnknown_QueryInterface(doc->webbrowser, &IID_IConnectionPointContainer, (void**)&cp_container);
if(FAILED(hres))
return TRUE;
hres = IConnectionPointContainer_FindConnectionPoint(cp_container, &DIID_DWebBrowserEvents2, &cp);
IConnectionPointContainer_Release(cp_container);
if(FAILED(hres))
return TRUE;
hres = IConnectionPoint_EnumConnections(cp, &enum_conn);
IConnectionPoint_Release(cp);
if(FAILED(hres))
return TRUE;
while(!cancel) {
conn_data.pUnk = NULL;
conn_data.dwCookie = 0;
fetched = 0;
hres = IEnumConnections_Next(enum_conn, 1, &conn_data, &fetched);
if(hres != S_OK)
break;
hres = IUnknown_QueryInterface(conn_data.pUnk, &IID_IDispatch, (void**)&disp);
IUnknown_Release(conn_data.pUnk);
if(FAILED(hres))
continue;
V_VT(args) = VT_BYREF|VT_BOOL;
V_BOOLREF(args) = &cancel;
V_VT(args+1) = VT_BOOL;
V_BOOL(args+1) = window->parent ? VARIANT_TRUE : VARIANT_FALSE;
hres = IDispatch_Invoke(disp, DISPID_WINDOWCLOSING, &IID_NULL, 0, DISPATCH_METHOD, &dp, NULL, NULL, NULL);
IDispatch_Release(disp);
if(FAILED(hres))
cancel = VARIANT_FALSE;
}
IEnumConnections_Release(enum_conn);
return !cancel;
}
static HRESULT WINAPI HTMLWindow2_close(IHTMLWindow2 *iface) static HRESULT WINAPI HTMLWindow2_close(IHTMLWindow2 *iface)
{ {
HTMLWindow *This = impl_from_IHTMLWindow2(iface); HTMLWindow *This = impl_from_IHTMLWindow2(iface);
FIXME("(%p)->()\n", This); HTMLOuterWindow *window = This->outer_window;
TRACE("(%p)\n", This);
if(!window->doc_obj) {
FIXME("No document object\n");
return E_FAIL;
}
if(!notify_webbrowser_close(window, window->doc_obj))
return S_OK;
FIXME("default action not implemented\n");
return E_NOTIMPL; return E_NOTIMPL;
} }
@ -2086,7 +2163,7 @@ static HRESULT WINAPI HTMLPrivateWindow_SuperNavigate(IHTMLPrivateWindow *iface,
translated_url = NULL; translated_url = NULL;
} }
hres = CreateUri(translated_url ? translated_url : url, 0, 0, &uri); hres = create_uri(translated_url ? translated_url : url, 0, &uri);
CoTaskMemFree(translated_url); CoTaskMemFree(translated_url);
if(FAILED(hres)) if(FAILED(hres))
return hres; return hres;
@ -2224,6 +2301,57 @@ static const ITravelLogClientVtbl TravelLogClientVtbl = {
TravelLogClient_LoadHistoryPosition TravelLogClient_LoadHistoryPosition
}; };
static inline HTMLWindow *impl_from_IObjectIdentity(IObjectIdentity *iface)
{
return CONTAINING_RECORD(iface, HTMLWindow, IObjectIdentity_iface);
}
static HRESULT WINAPI ObjectIdentity_QueryInterface(IObjectIdentity *iface, REFIID riid, void **ppv)
{
HTMLWindow *This = impl_from_IObjectIdentity(iface);
return IHTMLWindow2_QueryInterface(&This->IHTMLWindow2_iface, riid, ppv);
}
static ULONG WINAPI ObjectIdentity_AddRef(IObjectIdentity *iface)
{
HTMLWindow *This = impl_from_IObjectIdentity(iface);
return IHTMLWindow2_AddRef(&This->IHTMLWindow2_iface);
}
static ULONG WINAPI ObjectIdentity_Release(IObjectIdentity *iface)
{
HTMLWindow *This = impl_from_IObjectIdentity(iface);
return IHTMLWindow2_Release(&This->IHTMLWindow2_iface);
}
static HRESULT WINAPI ObjectIdentity_IsEqualObject(IObjectIdentity *iface, IUnknown *unk)
{
HTMLWindow *This = impl_from_IObjectIdentity(iface);
IServiceProvider *sp;
HRESULT hres;
TRACE("(%p)->(%p)\n", This, unk);
hres = IUnknown_QueryInterface(unk, &IID_IServiceProvider, (void**)&sp);
if(hres != S_OK)
return hres;
hres = &This->inner_window->base.IServiceProvider_iface==sp ||
&This->outer_window->base.IServiceProvider_iface==sp ? S_OK : S_FALSE;
IServiceProvider_Release(sp);
return hres;
}
static const IObjectIdentityVtbl ObjectIdentityVtbl = {
ObjectIdentity_QueryInterface,
ObjectIdentity_AddRef,
ObjectIdentity_Release,
ObjectIdentity_IsEqualObject
};
static inline HTMLWindow *impl_from_IDispatchEx(IDispatchEx *iface) static inline HTMLWindow *impl_from_IDispatchEx(IDispatchEx *iface)
{ {
return CONTAINING_RECORD(iface, HTMLWindow, IDispatchEx_iface); return CONTAINING_RECORD(iface, HTMLWindow, IDispatchEx_iface);
@ -2722,6 +2850,7 @@ static void *alloc_window(size_t size)
window->IDispatchEx_iface.lpVtbl = &WindowDispExVtbl; window->IDispatchEx_iface.lpVtbl = &WindowDispExVtbl;
window->IServiceProvider_iface.lpVtbl = &ServiceProviderVtbl; window->IServiceProvider_iface.lpVtbl = &ServiceProviderVtbl;
window->ITravelLogClient_iface.lpVtbl = &TravelLogClientVtbl; window->ITravelLogClient_iface.lpVtbl = &TravelLogClientVtbl;
window->IObjectIdentity_iface.lpVtbl = &ObjectIdentityVtbl;
window->ref = 1; window->ref = 1;
return window; return window;
@ -2882,7 +3011,7 @@ HRESULT update_window_doc(HTMLInnerWindow *window)
static const PRUnichar onW[] = {'o','n',0}; static const PRUnichar onW[] = {'o','n',0};
nsAString_Init(&mode_str, onW); nsAString_InitDepend(&mode_str, onW);
nsres = nsIDOMHTMLDocument_SetDesignMode(window->doc->nsdoc, &mode_str); nsres = nsIDOMHTMLDocument_SetDesignMode(window->doc->nsdoc, &mode_str);
nsAString_Finish(&mode_str); nsAString_Finish(&mode_str);
if(NS_FAILED(nsres)) if(NS_FAILED(nsres))

View file

@ -167,13 +167,14 @@ HDC get_display_dc(void)
return display_dc; return display_dc;
} }
BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpv) BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID reserved)
{ {
switch(fdwReason) { switch(fdwReason) {
case DLL_PROCESS_ATTACH: case DLL_PROCESS_ATTACH:
hInst = hInstDLL; hInst = hInstDLL;
break; break;
case DLL_PROCESS_DETACH: case DLL_PROCESS_DETACH:
if (reserved) break;
process_detach(); process_detach();
break; break;
case DLL_THREAD_DETACH: case DLL_THREAD_DETACH:

View file

@ -28,6 +28,7 @@
#include "objsafe.h" #include "objsafe.h"
#include "htiframe.h" #include "htiframe.h"
#include "tlogstg.h" #include "tlogstg.h"
#include <shdeprecated.h>
#include <wine/list.h> #include <wine/list.h>
#include <wine/unicode.h> #include <wine/unicode.h>
@ -105,6 +106,7 @@ typedef struct event_target_t event_target_t;
XDIID(DispHTMLSelectElement) \ XDIID(DispHTMLSelectElement) \
XDIID(DispHTMLStyle) \ XDIID(DispHTMLStyle) \
XDIID(DispHTMLStyleElement) \ XDIID(DispHTMLStyleElement) \
XDIID(DispHTMLStyleSheet) \
XDIID(DispHTMLStyleSheetsCollection) \ XDIID(DispHTMLStyleSheetsCollection) \
XDIID(DispHTMLTable) \ XDIID(DispHTMLTable) \
XDIID(DispHTMLTableCell) \ XDIID(DispHTMLTableCell) \
@ -177,6 +179,7 @@ typedef struct event_target_t event_target_t;
XIID(IHTMLStyle5) \ XIID(IHTMLStyle5) \
XIID(IHTMLStyle6) \ XIID(IHTMLStyle6) \
XIID(IHTMLStyleElement) \ XIID(IHTMLStyleElement) \
XIID(IHTMLStyleSheet) \
XIID(IHTMLStyleSheetsCollection) \ XIID(IHTMLStyleSheetsCollection) \
XIID(IHTMLTable) \ XIID(IHTMLTable) \
XIID(IHTMLTable2) \ XIID(IHTMLTable2) \
@ -338,6 +341,15 @@ struct HTMLLocation {
HTMLInnerWindow *window; HTMLInnerWindow *window;
}; };
typedef struct {
DispatchEx dispex;
IOmHistory IOmHistory_iface;
LONG ref;
HTMLInnerWindow *window;
} OmHistory;
typedef struct { typedef struct {
HTMLOuterWindow *window; HTMLOuterWindow *window;
LONG ref; LONG ref;
@ -355,6 +367,7 @@ struct HTMLWindow {
IDispatchEx IDispatchEx_iface; IDispatchEx IDispatchEx_iface;
IServiceProvider IServiceProvider_iface; IServiceProvider IServiceProvider_iface;
ITravelLogClient ITravelLogClient_iface; ITravelLogClient ITravelLogClient_iface;
IObjectIdentity IObjectIdentity_iface;
LONG ref; LONG ref;
@ -403,7 +416,7 @@ struct HTMLInnerWindow {
HTMLImageElementFactory *image_factory; HTMLImageElementFactory *image_factory;
HTMLOptionElementFactory *option_factory; HTMLOptionElementFactory *option_factory;
IHTMLScreen *screen; IHTMLScreen *screen;
IOmHistory *history; OmHistory *history;
IHTMLStorage *session_storage; IHTMLStorage *session_storage;
unsigned parser_callback_cnt; unsigned parser_callback_cnt;
@ -544,6 +557,9 @@ struct HTMLDocumentObj {
IOleInPlaceUIWindow *ip_window; IOleInPlaceUIWindow *ip_window;
IAdviseSink *view_sink; IAdviseSink *view_sink;
IDocObjectService *doc_object_service; IDocObjectService *doc_object_service;
IUnknown *webbrowser;
ITravelLog *travel_log;
IUnknown *browser_service;
DOCHOSTUIINFO hostinfo; DOCHOSTUIINFO hostinfo;
@ -557,7 +573,6 @@ struct HTMLDocumentObj {
BOOL ui_active; BOOL ui_active;
BOOL window_active; BOOL window_active;
BOOL hostui_setup; BOOL hostui_setup;
BOOL is_webbrowser;
BOOL container_locked; BOOL container_locked;
BOOL focus; BOOL focus;
BOOL has_popup; BOOL has_popup;
@ -738,7 +753,7 @@ HRESULT HTMLImageElementFactory_Create(HTMLInnerWindow*,HTMLImageElementFactory*
HRESULT HTMLLocation_Create(HTMLInnerWindow*,HTMLLocation**) DECLSPEC_HIDDEN; HRESULT HTMLLocation_Create(HTMLInnerWindow*,HTMLLocation**) DECLSPEC_HIDDEN;
IOmNavigator *OmNavigator_Create(void) DECLSPEC_HIDDEN; IOmNavigator *OmNavigator_Create(void) DECLSPEC_HIDDEN;
HRESULT HTMLScreen_Create(IHTMLScreen**) DECLSPEC_HIDDEN; HRESULT HTMLScreen_Create(IHTMLScreen**) DECLSPEC_HIDDEN;
HRESULT create_history(IOmHistory**) DECLSPEC_HIDDEN; HRESULT create_history(HTMLInnerWindow*,OmHistory**) DECLSPEC_HIDDEN;
HRESULT create_storage(IHTMLStorage**) DECLSPEC_HIDDEN; HRESULT create_storage(IHTMLStorage**) DECLSPEC_HIDDEN;
@ -768,6 +783,7 @@ void NSContainer_Release(NSContainer*) DECLSPEC_HIDDEN;
void init_mutation(nsIComponentManager*) DECLSPEC_HIDDEN; void init_mutation(nsIComponentManager*) DECLSPEC_HIDDEN;
void init_document_mutation(HTMLDocumentNode*) DECLSPEC_HIDDEN; void init_document_mutation(HTMLDocumentNode*) DECLSPEC_HIDDEN;
void release_document_mutation(HTMLDocumentNode*) DECLSPEC_HIDDEN; void release_document_mutation(HTMLDocumentNode*) DECLSPEC_HIDDEN;
JSContext *get_context_from_document(nsIDOMHTMLDocument*) DECLSPEC_HIDDEN;
void HTMLDocument_LockContainer(HTMLDocumentObj*,BOOL) DECLSPEC_HIDDEN; void HTMLDocument_LockContainer(HTMLDocumentObj*,BOOL) DECLSPEC_HIDDEN;
void show_context_menu(HTMLDocumentObj*,DWORD,POINT*,IDispatch*) DECLSPEC_HIDDEN; void show_context_menu(HTMLDocumentObj*,DWORD,POINT*,IDispatch*) DECLSPEC_HIDDEN;
@ -952,6 +968,7 @@ void update_title(HTMLDocumentObj*) DECLSPEC_HIDDEN;
HRESULT do_query_service(IUnknown*,REFGUID,REFIID,void**) DECLSPEC_HIDDEN; HRESULT do_query_service(IUnknown*,REFGUID,REFIID,void**) DECLSPEC_HIDDEN;
/* editor */ /* editor */
HRESULT setup_edit_mode(HTMLDocumentObj*) DECLSPEC_HIDDEN;
void init_editor(HTMLDocument*) DECLSPEC_HIDDEN; void init_editor(HTMLDocument*) DECLSPEC_HIDDEN;
void handle_edit_event(HTMLDocument*,nsIDOMEvent*) DECLSPEC_HIDDEN; void handle_edit_event(HTMLDocument*,nsIDOMEvent*) DECLSPEC_HIDDEN;
HRESULT editor_exec_copy(HTMLDocument*,DWORD,VARIANT*,VARIANT*) DECLSPEC_HIDDEN; HRESULT editor_exec_copy(HTMLDocument*,DWORD,VARIANT*,VARIANT*) DECLSPEC_HIDDEN;

View file

@ -22,6 +22,7 @@
#include <config.h> #include <config.h>
#include <stdarg.h> #include <stdarg.h>
#include <assert.h>
#define COBJMACROS #define COBJMACROS
@ -271,7 +272,7 @@ static void parse_complete(HTMLDocumentObj *doc)
call_property_onchanged(&doc->basedoc.cp_container, 1005); call_property_onchanged(&doc->basedoc.cp_container, 1005);
call_explorer_69(doc); call_explorer_69(doc);
if(doc->is_webbrowser && doc->usermode != EDITMODE && !(doc->basedoc.window->load_flags & BINDING_REFRESH)) if(doc->webbrowser && doc->usermode != EDITMODE && !(doc->basedoc.window->load_flags & BINDING_REFRESH))
IDocObjectService_FireNavigateComplete2(doc->doc_object_service, &doc->basedoc.window->base.IHTMLWindow2_iface, 0); IDocObjectService_FireNavigateComplete2(doc->doc_object_service, &doc->basedoc.window->base.IHTMLWindow2_iface, 0);
/* FIXME: IE7 calls EnableModelless(TRUE), EnableModelless(FALSE) and sets interactive state here */ /* FIXME: IE7 calls EnableModelless(TRUE), EnableModelless(FALSE) and sets interactive state here */
@ -778,6 +779,22 @@ void release_document_mutation(HTMLDocumentNode *doc)
nsIDocument_Release(nsdoc); nsIDocument_Release(nsdoc);
} }
JSContext *get_context_from_document(nsIDOMHTMLDocument *nsdoc)
{
nsIDocument *doc;
JSContext *ctx;
nsresult nsres;
nsres = nsIDOMHTMLDocument_QueryInterface(nsdoc, &IID_nsIDocument, (void**)&doc);
assert(nsres == NS_OK);
ctx = nsIContentUtils_GetContextFromDocument(content_utils, doc);
nsIDocument_Release(doc);
TRACE("ret %p\n", ctx);
return ctx;
}
void init_mutation(nsIComponentManager *component_manager) void init_mutation(nsIComponentManager *component_manager)
{ {
nsIFactory *factory; nsIFactory *factory;

View file

@ -1135,7 +1135,7 @@ static void on_stop_nsrequest(nsChannelBSC *This, HRESULT result)
WARN("OnStopRequest failed: %08x\n", nsres); WARN("OnStopRequest failed: %08x\n", nsres);
} }
if(This->nschannel->load_group) { if(This->nschannel && This->nschannel->load_group) {
nsres = nsILoadGroup_RemoveRequest(This->nschannel->load_group, nsres = nsILoadGroup_RemoveRequest(This->nschannel->load_group,
(nsIRequest*)&This->nschannel->nsIHttpChannel_iface, NULL, request_result); (nsIRequest*)&This->nschannel->nsIHttpChannel_iface, NULL, request_result);
if(NS_FAILED(nsres)) if(NS_FAILED(nsres))
@ -1762,6 +1762,7 @@ HRESULT create_channelbsc(IMoniker *mon, const WCHAR *headers, BYTE *post_data,
ret->bsc.post_data_len = post_data_size; ret->bsc.post_data_len = post_data_size;
} }
TRACE("created %p\n", ret);
*retval = ret; *retval = ret;
return S_OK; return S_OK;
} }
@ -1957,7 +1958,7 @@ static void navigate_proc(task_t *_task)
navigate_task_t *task = (navigate_task_t*)_task; navigate_task_t *task = (navigate_task_t*)_task;
HRESULT hres; HRESULT hres;
hres = set_moniker(&task->window->doc_obj->basedoc, task->mon, NULL, task->bscallback, TRUE); hres = set_moniker(task->window, task->mon, task->uri, NULL, task->bscallback, TRUE);
if(SUCCEEDED(hres)) { if(SUCCEEDED(hres)) {
set_current_mon(task->window, task->bscallback->bsc.mon, task->flags); set_current_mon(task->window, task->bscallback->bsc.mon, task->flags);
set_current_uri(task->window, task->uri); set_current_uri(task->window, task->uri);
@ -2269,7 +2270,9 @@ static HRESULT navigate_uri(HTMLOuterWindow *window, IUri *uri, const WCHAR *dis
nsWineURI *nsuri; nsWineURI *nsuri;
HRESULT hres; HRESULT hres;
if(window->doc_obj && window->doc_obj->is_webbrowser && window == window->doc_obj->basedoc.window) { TRACE("%s\n", debugstr_w(display_uri));
if(window->doc_obj && window->doc_obj->webbrowser && window == window->doc_obj->basedoc.window) {
if(!(flags & BINDING_REFRESH)) { if(!(flags & BINDING_REFRESH)) {
BOOL cancel = FALSE; BOOL cancel = FALSE;
@ -2297,7 +2300,7 @@ static HRESULT navigate_uri(HTMLOuterWindow *window, IUri *uri, const WCHAR *dis
} }
} }
hres = create_doc_uri(window, display_uri, &nsuri); hres = create_doc_uri(window, uri, &nsuri);
if(FAILED(hres)) if(FAILED(hres))
return hres; return hres;
@ -2330,7 +2333,7 @@ HRESULT navigate_url(HTMLOuterWindow *window, const WCHAR *new_url, IUri *base_u
hres = CoInternetCombineUrlEx(base_uri, new_url, URL_ESCAPE_SPACES_ONLY|URL_DONT_ESCAPE_EXTRA_INFO, hres = CoInternetCombineUrlEx(base_uri, new_url, URL_ESCAPE_SPACES_ONLY|URL_DONT_ESCAPE_EXTRA_INFO,
&uri, 0); &uri, 0);
else else
hres = CreateUri(new_url, 0, 0, &uri); hres = create_uri(new_url, 0, &uri);
if(FAILED(hres)) if(FAILED(hres))
return hres; return hres;
@ -2349,7 +2352,7 @@ HRESULT navigate_url(HTMLOuterWindow *window, const WCHAR *new_url, IUri *base_u
TRACE("%08x %s -> %s\n", hres, debugstr_w(display_uri), debugstr_w(translated_url)); TRACE("%08x %s -> %s\n", hres, debugstr_w(display_uri), debugstr_w(translated_url));
SysFreeString(display_uri); SysFreeString(display_uri);
IUri_Release(uri); IUri_Release(uri);
hres = CreateUri(translated_url, 0, 0, &uri); hres = create_uri(translated_url, 0, &uri);
CoTaskMemFree(translated_url); CoTaskMemFree(translated_url);
if(FAILED(hres)) if(FAILED(hres))
return hres; return hres;

View file

@ -290,6 +290,7 @@ static nsresult NSAPI nsDirectoryServiceProvider2_GetFile(nsIDirectoryServicePro
return nsIFile_Clone(profile_directory, _retval); return nsIFile_Clone(profile_directory, _retval);
} }
*_retval = NULL;
return NS_ERROR_FAILURE; return NS_ERROR_FAILURE;
} }
@ -313,8 +314,10 @@ static nsresult NSAPI nsDirectoryServiceProvider2_GetFiles(nsIDirectoryServicePr
strcpyW(plugin_path+len, gecko_pluginW); strcpyW(plugin_path+len, gecko_pluginW);
nsres = create_nsfile(plugin_path, &plugin_directory); nsres = create_nsfile(plugin_path, &plugin_directory);
if(NS_FAILED(nsres)) if(NS_FAILED(nsres)) {
*_retval = NULL;
return nsres; return nsres;
}
} }
nsres = nsIFile_Clone(plugin_directory, &file); nsres = nsIFile_Clone(plugin_directory, &file);
@ -329,6 +332,7 @@ static nsresult NSAPI nsDirectoryServiceProvider2_GetFiles(nsIDirectoryServicePr
return NS_OK; return NS_OK;
} }
*_retval = NULL;
return NS_ERROR_FAILURE; return NS_ERROR_FAILURE;
} }
@ -395,6 +399,46 @@ static void register_nscontainer_class(void)
nscontainer_class = RegisterClassExW(&wndclass); nscontainer_class = RegisterClassExW(&wndclass);
} }
#ifndef __REACTOS__
static BOOL install_wine_gecko(void)
{
PROCESS_INFORMATION pi;
STARTUPINFOW si;
WCHAR app[MAX_PATH];
WCHAR *args;
LONG len;
BOOL ret;
static const WCHAR controlW[] = {'\\','c','o','n','t','r','o','l','.','e','x','e',0};
static const WCHAR argsW[] =
{' ','a','p','p','w','i','z','.','c','p','l',' ','i','n','s','t','a','l','l','_','g','e','c','k','o',0};
len = GetSystemDirectoryW(app, MAX_PATH-sizeof(controlW)/sizeof(WCHAR));
memcpy(app+len, controlW, sizeof(controlW));
args = heap_alloc(len*sizeof(WCHAR) + sizeof(controlW) + sizeof(argsW));
if(!args)
return FALSE;
memcpy(args, app, len*sizeof(WCHAR) + sizeof(controlW));
memcpy(args + len + sizeof(controlW)/sizeof(WCHAR)-1, argsW, sizeof(argsW));
TRACE("starting %s\n", debugstr_w(args));
memset(&si, 0, sizeof(si));
si.cb = sizeof(si);
ret = CreateProcessW(app, args, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
heap_free(args);
if (ret) {
CloseHandle(pi.hThread);
WaitForSingleObject(pi.hProcess, INFINITE);
CloseHandle(pi.hProcess);
}
return ret;
}
#endif
static void set_environment(LPCWSTR gre_path) static void set_environment(LPCWSTR gre_path)
{ {
WCHAR path_env[MAX_PATH], buf[20]; WCHAR path_env[MAX_PATH], buf[20];
@ -723,7 +767,12 @@ BOOL load_gecko(void)
if(!loading_thread) { if(!loading_thread) {
loading_thread = GetCurrentThreadId(); loading_thread = GetCurrentThreadId();
#ifdef __REACTOS__
if(load_wine_gecko(gre_path)) if(load_wine_gecko(gre_path))
#else
if(load_wine_gecko(gre_path)
|| (install_wine_gecko() && load_wine_gecko(gre_path)))
#endif
ret = init_xpcom(gre_path); ret = init_xpcom(gre_path);
else else
MESSAGE("Could not load wine-gecko. HTML rendering will be disabled.\n"); MESSAGE("Could not load wine-gecko. HTML rendering will be disabled.\n");

View file

@ -238,6 +238,7 @@ static nsresult NSAPI handle_load(nsIDOMEventListener *iface, nsIDOMEvent *event
HTMLDocumentNode *doc = This->This->doc; HTMLDocumentNode *doc = This->This->doc;
nsIDOMHTMLElement *nsbody = NULL; nsIDOMHTMLElement *nsbody = NULL;
HTMLDocumentObj *doc_obj = NULL; HTMLDocumentObj *doc_obj = NULL;
nsresult nsres = NS_OK;
TRACE("(%p)\n", doc); TRACE("(%p)\n", doc);
@ -248,6 +249,8 @@ static nsresult NSAPI handle_load(nsIDOMEventListener *iface, nsIDOMEvent *event
connect_scripts(doc->window); connect_scripts(doc->window);
htmldoc_addref(&doc->basedoc);
if(doc_obj) if(doc_obj)
handle_docobj_load(doc_obj); handle_docobj_load(doc_obj);
@ -267,18 +270,19 @@ static nsresult NSAPI handle_load(nsIDOMEventListener *iface, nsIDOMEvent *event
IDocObjectService_FireDocumentComplete(doc_obj->doc_object_service, IDocObjectService_FireDocumentComplete(doc_obj->doc_object_service,
&doc->basedoc.window->base.IHTMLWindow2_iface, 0); &doc->basedoc.window->base.IHTMLWindow2_iface, 0);
if(!doc->nsdoc) { if(doc->nsdoc) {
nsIDOMHTMLDocument_GetBody(doc->nsdoc, &nsbody);
if(nsbody) {
fire_event(doc, EVENTID_LOAD, TRUE, (nsIDOMNode*)nsbody, event, (IDispatch*)&doc->window->base.IDispatchEx_iface);
nsIDOMHTMLElement_Release(nsbody);
}
}else {
ERR("NULL nsdoc\n"); ERR("NULL nsdoc\n");
return NS_ERROR_FAILURE; nsres = NS_ERROR_FAILURE;
} }
nsIDOMHTMLDocument_GetBody(doc->nsdoc, &nsbody); htmldoc_release(&doc->basedoc);
if(nsbody) { return nsres;
fire_event(doc, EVENTID_LOAD, TRUE, (nsIDOMNode*)nsbody, event, (IDispatch*)&doc->window->base.IDispatchEx_iface);
nsIDOMHTMLElement_Release(nsbody);
}
return NS_OK;
} }
static nsresult NSAPI handle_htmlevent(nsIDOMEventListener *iface, nsIDOMEvent *event) static nsresult NSAPI handle_htmlevent(nsIDOMEventListener *iface, nsIDOMEvent *event)

View file

@ -23,7 +23,7 @@
* compatible with XPCOM, usable in C code. * compatible with XPCOM, usable in C code.
*/ */
cpp_quote("#define GECKO_VERSION \"1.9\"") cpp_quote("#define GECKO_VERSION \"2.21\"")
cpp_quote("#define GECKO_VERSION_STRING \"Wine Gecko \" GECKO_VERSION") cpp_quote("#define GECKO_VERSION_STRING \"Wine Gecko \" GECKO_VERSION")
import "wtypes.idl"; import "wtypes.idl";
@ -179,10 +179,7 @@ typedef nsISupports nsIDOMHistory;
typedef nsISupports nsIDOMNavigator; typedef nsISupports nsIDOMNavigator;
typedef nsISupports nsIDOMMediaQueryList; typedef nsISupports nsIDOMMediaQueryList;
typedef nsISupports nsIDOMScreen; typedef nsISupports nsIDOMScreen;
typedef nsISupports nsIDOMCrypto;
typedef nsISupports nsIDOMPkcs11;
typedef nsISupports nsIAnimationFrameListener; typedef nsISupports nsIAnimationFrameListener;
typedef nsISupports nsIDOMMozURLProperty;
typedef nsISupports nsIDOMStorageList; typedef nsISupports nsIDOMStorageList;
typedef nsISupports nsILocalFile; typedef nsISupports nsILocalFile;
typedef nsISupports nsIDOMHTMLMenuElement; typedef nsISupports nsIDOMHTMLMenuElement;
@ -195,6 +192,10 @@ typedef nsISupports nsIDOMBlob;
typedef nsISupports nsIPrivacyTransitionObserver; typedef nsISupports nsIPrivacyTransitionObserver;
typedef nsISupports nsIDOMHTMLPropertiesCollection; typedef nsISupports nsIDOMHTMLPropertiesCollection;
typedef nsISupports mozIDOMApplication; typedef nsISupports mozIDOMApplication;
typedef nsISupports nsILoadGroupConnectionInfo;
typedef nsISupports nsIDOMCrypto;
typedef nsISupports nsIDOMPkcs11;
typedef nsISupports nsIDocShellTreeOwner;
typedef void *JSContext; typedef void *JSContext;
typedef void *JSObject; typedef void *JSObject;
@ -226,7 +227,7 @@ interface nsIFactory : nsISupports
[ [
object, object,
uuid(59e7e77a-38e4-11d4-8cf5-0060b0fc14a3), uuid(6aef11c4-8615-44a6-9711-98f43805693d),
local local
] ]
interface nsIMemory : nsISupports interface nsIMemory : nsISupports
@ -236,6 +237,7 @@ interface nsIMemory : nsISupports
void Free(void *_ptr); void Free(void *_ptr);
nsresult HeapMinimize(bool immediate); nsresult HeapMinimize(bool immediate);
nsresult IsLowMemory(bool *_retval); nsresult IsLowMemory(bool *_retval);
nsresult IsLowMemoryPlatform(bool *_retval);
} }
[ [
@ -521,7 +523,7 @@ interface nsIStreamListener : nsIRequestObserver
[ [
object, object,
uuid(3de0a31c-feaf-400f-9f1e-4ef71f8b20cc), uuid(19501006-46e3-4634-b97d-26eff894b4d3),
local local
] ]
interface nsILoadGroup : nsIRequest interface nsILoadGroup : nsIRequest
@ -536,15 +538,26 @@ interface nsILoadGroup : nsIRequest
nsresult GetActiveCount(uint32_t *aActiveCount); nsresult GetActiveCount(uint32_t *aActiveCount);
nsresult GetNotificationCallbacks(nsIInterfaceRequestor **aNotificationCallbacks); nsresult GetNotificationCallbacks(nsIInterfaceRequestor **aNotificationCallbacks);
nsresult SetNotificationCallbacks(nsIInterfaceRequestor *aNotificationCallbacks); nsresult SetNotificationCallbacks(nsIInterfaceRequestor *aNotificationCallbacks);
nsresult GetConnectionInfo(nsILoadGroupConnectionInfo **aConnectionInfo);
} }
[ [
object, object,
uuid(98f3b51b-bb55-4276-a43c-db636f8d77e3), uuid(2a8a7237-c1e2-4de7-b669-2002af29e42d),
local local
] ]
interface nsIChannel : nsIRequest interface nsIChannel : nsIRequest
{ {
const UINT LOAD_DOCUMENT_URI = 1 << 16;
const UINT LOAD_RETARGETED_DOCUMENT_URI = 1 << 17;
const UINT LOAD_REPLACE = 1 << 18;
const UINT LOAD_INITIAL_DOCUMENT_URI = 1 << 19;
const UINT LOAD_TARGETED = 1 << 20;
const UINT LOAD_CALL_CONTENT_SNIFFERS = 1 << 21;
const UINT LOAD_CLASSIFY_URI = 1 << 22;
const UINT LOAD_TREAT_APPLICATION_OCTET_STREAM_AS_UNKNOWN = 1 << 23;
const UINT LOAD_EXPLICIT_CREDENTIALS = 1 << 24;
nsresult GetOriginalURI(nsIURI **aOriginalURI); nsresult GetOriginalURI(nsIURI **aOriginalURI);
nsresult SetOriginalURI(nsIURI *aOriginalURI); nsresult SetOriginalURI(nsIURI *aOriginalURI);
nsresult GetURI(nsIURI **aURI); nsresult GetURI(nsIURI **aURI);
@ -557,8 +570,8 @@ interface nsIChannel : nsIRequest
nsresult SetContentType(const nsACString *aContentType); nsresult SetContentType(const nsACString *aContentType);
nsresult GetContentCharset(nsACString *aContentCharset); nsresult GetContentCharset(nsACString *aContentCharset);
nsresult SetContentCharset(const nsACString *aContentCharset); nsresult SetContentCharset(const nsACString *aContentCharset);
nsresult GetContentLength(int32_t *aContentLength); nsresult GetContentLength(int64_t *aContentLength);
nsresult SetContentLength(int32_t aContentLength); nsresult SetContentLength(int64_t aContentLength);
nsresult Open(nsIInputStream **_retval); nsresult Open(nsIInputStream **_retval);
nsresult AsyncOpen(nsIStreamListener *aListener, nsISupports *aContext); nsresult AsyncOpen(nsIStreamListener *aListener, nsISupports *aContext);
nsresult GetContentDisposition(uint32_t *aContentDisposition); nsresult GetContentDisposition(uint32_t *aContentDisposition);
@ -580,7 +593,7 @@ interface nsIHttpHeaderVisitor : nsISupports
[ [
object, object,
uuid(9277fe09-f0cc-4cd9-bbce-581dd94b0260), uuid(a01362a0-5c45-11e2-bcfd-0800200c9a66),
local local
] ]
interface nsIHttpChannel : nsIChannel interface nsIHttpChannel : nsIChannel
@ -604,11 +617,12 @@ interface nsIHttpChannel : nsIChannel
nsresult VisitResponseHeaders(nsIHttpHeaderVisitor *aVisitor); nsresult VisitResponseHeaders(nsIHttpHeaderVisitor *aVisitor);
nsresult IsNoStoreResponse(bool *_retval); nsresult IsNoStoreResponse(bool *_retval);
nsresult IsNoCacheResponse(bool *_retval); nsresult IsNoCacheResponse(bool *_retval);
nsresult RedirectTo(nsIURI *aNewURI);
} }
[ [
object, object,
uuid(9363fd96-af59-47e8-bddf-1d5e91acd336), uuid(74d13d41-85cd-490f-9942-300d0c01c726),
local local
] ]
interface nsIHttpChannelInternal : nsISupports interface nsIHttpChannelInternal : nsISupports
@ -632,6 +646,10 @@ interface nsIHttpChannelInternal : nsISupports
nsresult HTTPUpgrade(const nsACString *aProtocolName, nsIHttpUpgradeListener *aListener); nsresult HTTPUpgrade(const nsACString *aProtocolName, nsIHttpUpgradeListener *aListener);
nsresult GetAllowSpdy(bool *aAllowSpdy); nsresult GetAllowSpdy(bool *aAllowSpdy);
nsresult SetAllowSpdy(bool aAllowSpdy); nsresult SetAllowSpdy(bool aAllowSpdy);
nsresult GetLoadAsBlocking(bool *aLoadAsBlocking);
nsresult SetLoadAsBlocking(bool aLoadAsBlocking);
nsresult GetLoadUnblocked(bool *aLoadUnblocked);
nsresult SetLoadUnblocked(bool aLoadUnblocked);
} }
[ [
@ -673,7 +691,7 @@ interface nsIChannelEventSink : nsISupports
[ [
object, object,
uuid(a6cf906d-15b3-11d2-932e-00805f8add32), uuid(79de76e5-994e-4f6b-81aa-42d9adb6e67e),
local local
] ]
interface nsIDOMLocation : nsISupports interface nsIDOMLocation : nsISupports
@ -694,10 +712,12 @@ interface nsIDOMLocation : nsISupports
nsresult SetProtocol(const nsAString *aProtocol); nsresult SetProtocol(const nsAString *aProtocol);
nsresult GetSearch(nsAString *aSearch); nsresult GetSearch(nsAString *aSearch);
nsresult SetSearch(const nsAString *aSearch); nsresult SetSearch(const nsAString *aSearch);
nsresult GetOrigin(nsAString *aOrigin);
nsresult Reload(bool forceget); nsresult Reload(bool forceget);
nsresult Replace(const nsAString *url); nsresult Replace(const nsAString *url);
nsresult Assign(const nsAString *url); nsresult Assign(const nsAString *url);
nsresult ToString(nsAString *_retval); nsresult ToString(nsAString *_retval);
nsresult ValueOf(nsIDOMLocation **_retval);
} }
[ [
@ -788,14 +808,25 @@ interface nsIDOMStyleSheetList : nsISupports
[ [
object, object,
uuid(496852ba-e48d-4fa5-982e-e0dc1b475bf1), uuid(450cf0ba-de90-4f86-85bf-e10cc8b8713f),
local local
] ]
interface nsIDOMNodeList : nsISupports interface nsIDOMNodeList : nsISupports
{ {
nsresult Item(uint32_t index, nsIDOMNode **_retval); nsresult Item(uint32_t index, nsIDOMNode **_retval);
nsresult GetLength(uint32_t *aLength); nsresult GetLength(uint32_t *aLength);
/* Followed by semi-internal API that we don't want to use */ }
[
object,
uuid(bb07f567-5b37-4172-92aa-7d00ceed4809),
local
]
interface nsIDOMHTMLCollection : nsISupports
{
nsresult GetLength(uint32_t *aLength);
nsresult Item(uint32_t index, nsIDOMNode **_retval);
nsresult NamedItem(const nsAString *name, nsIDOMNode **_retval);
} }
[ [
@ -919,13 +950,13 @@ interface nsIDOMClientRect : nsISupports
[ [
object, object,
uuid(69d44ce2-b544-49a8-bb5f-87804b971ee4), uuid(8f972a47-1f20-4906-b59d-19310349a2c2),
local local
] ]
interface nsIDOMElement : nsIDOMNode interface nsIDOMElement : nsIDOMNode
{ {
nsresult GetTagName(nsAString *aTagName); nsresult GetTagName(nsAString *aTagName);
nsresult GetClassList(nsIDOMDOMTokenList **aClassList); nsresult GetClassList(nsISupports **aClassList);
nsresult GetAttribute(const nsAString *name, nsAString *_retval); nsresult GetAttribute(const nsAString *name, nsAString *_retval);
nsresult GetAttributeNS(const nsAString *namespaceURI, const nsAString *localName, nsAString *_retval); nsresult GetAttributeNS(const nsAString *namespaceURI, const nsAString *localName, nsAString *_retval);
nsresult SetAttribute(const nsAString *name, const nsAString *value); nsresult SetAttribute(const nsAString *name, const nsAString *value);
@ -939,9 +970,9 @@ interface nsIDOMElement : nsIDOMNode
nsresult RemoveAttributeNode(nsIDOMAttr *oldAttr, nsIDOMAttr **_retval); nsresult RemoveAttributeNode(nsIDOMAttr *oldAttr, nsIDOMAttr **_retval);
nsresult GetAttributeNodeNS(const nsAString *namespaceURI, const nsAString *localName, nsIDOMAttr **_retval); nsresult GetAttributeNodeNS(const nsAString *namespaceURI, const nsAString *localName, nsIDOMAttr **_retval);
nsresult SetAttributeNodeNS(nsIDOMAttr *newAttr, nsIDOMAttr **_retval); nsresult SetAttributeNodeNS(nsIDOMAttr *newAttr, nsIDOMAttr **_retval);
nsresult GetElementsByTagName(const nsAString *name, nsIDOMNodeList **_retval); nsresult GetElementsByTagName(const nsAString *name, nsIDOMHTMLCollection **_retval);
nsresult GetElementsByTagNameNS(const nsAString *namespaceURI, const nsAString *localName, nsIDOMNodeList **_retval); nsresult GetElementsByTagNameNS(const nsAString *namespaceURI, const nsAString *localName, nsIDOMHTMLCollection **_retval);
nsresult GetElementsByClassName(const nsAString *classes, nsIDOMNodeList **_retval); nsresult GetElementsByClassName(const nsAString *classes, nsIDOMHTMLCollection **_retval);
nsresult GetChildElements(nsIDOMNodeList **aChildren); nsresult GetChildElements(nsIDOMNodeList **aChildren);
nsresult GetFirstElementChild(nsIDOMElement **aFirstElementChild); nsresult GetFirstElementChild(nsIDOMElement **aFirstElementChild);
nsresult GetLastElementChild(nsIDOMElement **aLastElementChild); nsresult GetLastElementChild(nsIDOMElement **aLastElementChild);
@ -1002,14 +1033,14 @@ interface nsIDOMHTMLElement : nsIDOMElement
nsresult SetDir(const nsAString *aDir); nsresult SetDir(const nsAString *aDir);
nsresult GetClassName(nsAString *aClassName); nsresult GetClassName(nsAString *aClassName);
nsresult SetClassName(const nsAString *aClassName); nsresult SetClassName(const nsAString *aClassName);
nsresult GetDataset(nsIDOMDOMStringMap **aDataset); nsresult GetDataset(nsISupports **aDataset);
nsresult GetItemScope(bool *aItemScope); nsresult GetItemScope(bool *aItemScope);
nsresult SetItemScope(bool aItemScope); nsresult SetItemScope(bool aItemScope);
nsresult GetItemType(nsIVariant **aItemType); nsresult GetItemType(nsIVariant **aItemType);
nsresult SetItemType(nsIVariant *aItemType); nsresult SetItemType(nsIVariant *aItemType);
nsresult GetItemId(nsAString *aItemId); nsresult GetItemId(nsAString *aItemId);
nsresult SetItemId(const nsAString *aItemId); nsresult SetItemId(const nsAString *aItemId);
nsresult GetProperties(nsIDOMHTMLPropertiesCollection **aProperties); nsresult GetProperties(nsISupports **aProperties);
nsresult GetItemValue(nsIVariant **aItemValue); nsresult GetItemValue(nsIVariant **aItemValue);
nsresult SetItemValue(nsIVariant *aItemValue); nsresult SetItemValue(nsIVariant *aItemValue);
nsresult GetItemProp(nsIVariant **aItemProp); nsresult GetItemProp(nsIVariant **aItemProp);
@ -1056,20 +1087,6 @@ interface nsIDOMHTMLHeadElement : nsIDOMHTMLElement
{ {
} }
[
object,
uuid(db690d8f-3bca-4198-be64-78adb7f38bf8),
local
]
interface nsIDOMHTMLCollection : nsISupports
{
nsresult GetLength(uint32_t *aLength);
nsresult Item(uint32_t index, nsIDOMNode **_retval);
nsresult NamedItem(const nsAString *name, nsIDOMNode **_retval);
/* Followed by semi-internal API that we don't want to use */
}
[ [
object, object,
uuid(cb75c251-afc7-444f-b2d6-b9635555f3ed), uuid(cb75c251-afc7-444f-b2d6-b9635555f3ed),
@ -1118,7 +1135,7 @@ interface nsIDOMDocumentFragment : nsIDOMNode
[ [
object, object,
uuid(b7e90442-74d6-494e-af01-906d95926dec), uuid(9b93f82b-9691-4021-8f45-1bf505db77ba),
local local
] ]
interface nsIDOMDocument : nsIDOMNode interface nsIDOMDocument : nsIDOMNode
@ -1141,6 +1158,7 @@ interface nsIDOMDocument : nsIDOMNode
nsresult GetElementById(const nsAString *elementId, nsIDOMElement **_retval); nsresult GetElementById(const nsAString *elementId, nsIDOMElement **_retval);
nsresult GetInputEncoding(nsAString *aInputEncoding); nsresult GetInputEncoding(nsAString *aInputEncoding);
nsresult GetDocumentURI(nsAString *aDocumentURI); nsresult GetDocumentURI(nsAString *aDocumentURI);
nsresult GetURL(nsAString *aURL);
nsresult AdoptNode(nsIDOMNode *source, nsIDOMNode **_retval); nsresult AdoptNode(nsIDOMNode *source, nsIDOMNode **_retval);
nsresult CreateRange(nsIDOMRange **_retval); nsresult CreateRange(nsIDOMRange **_retval);
nsresult CreateNodeIterator(nsIDOMNode *root, uint32_t whatToShow, nsIDOMNodeFilter *filter, uint8_t _argc, nsresult CreateNodeIterator(nsIDOMNode *root, uint32_t whatToShow, nsIDOMNodeFilter *filter, uint8_t _argc,
@ -1180,6 +1198,7 @@ interface nsIDOMDocument : nsIDOMNode
nsresult GetMozFullScreen(bool *aMozFullScreen); nsresult GetMozFullScreen(bool *aMozFullScreen);
nsresult GetMozFullScreenEnabled(bool *aMozFullScreenEnabled); nsresult GetMozFullScreenEnabled(bool *aMozFullScreenEnabled);
nsresult GetMozPointerLockElement(nsIDOMElement **aMozPointerLockElement); nsresult GetMozPointerLockElement(nsIDOMElement **aMozPointerLockElement);
nsresult CaretPositionFromPoint(float x, float y, nsISupports **_retval);
nsresult MozExitPointerLock(); nsresult MozExitPointerLock();
nsresult GetOnreadystatechange(JSContext* cx, jsval aOnreadystatechange); nsresult GetOnreadystatechange(JSContext* cx, jsval aOnreadystatechange);
nsresult SetOnreadystatechange(JSContext* cx, const jsval *aOnreadystatechange); nsresult SetOnreadystatechange(JSContext* cx, const jsval *aOnreadystatechange);
@ -1191,21 +1210,20 @@ interface nsIDOMDocument : nsIDOMNode
nsresult GetMozHidden(bool *aMozHidden); nsresult GetMozHidden(bool *aMozHidden);
nsresult GetVisibilityState(nsAString *aVisibilityState); nsresult GetVisibilityState(nsAString *aVisibilityState);
nsresult GetMozVisibilityState(nsAString *aMozVisibilityState); nsresult GetMozVisibilityState(nsAString *aMozVisibilityState);
nsresult GetCompatMode(nsAString *aCompatMode);
} }
[ [
object, object,
uuid(ecae54c6-2ab9-4167-b0ef-61960aadbb68), uuid(3f8666a9-76f0-4733-ae11-4aea8753062d),
local local
] ]
interface nsIDOMHTMLDocument : nsIDOMDocument interface nsIDOMHTMLDocument : nsIDOMDocument
{ {
nsresult GetURL(nsAString *aURL);
nsresult GetDomain(nsAString *aDomain); nsresult GetDomain(nsAString *aDomain);
nsresult SetDomain(const nsAString *aDomain); nsresult SetDomain(const nsAString *aDomain);
nsresult GetCookie(nsAString *aCookie); nsresult GetCookie(nsAString *aCookie);
nsresult SetCookie(const nsAString *aCookie); nsresult SetCookie(const nsAString *aCookie);
nsresult GetCompatMode(nsAString *aCompatMode);
nsresult GetHead(nsIDOMHTMLHeadElement **aHead); nsresult GetHead(nsIDOMHTMLHeadElement **aHead);
nsresult GetBody(nsIDOMHTMLElement **aBody); nsresult GetBody(nsIDOMHTMLElement **aBody);
nsresult SetBody(nsIDOMHTMLElement *aBody); nsresult SetBody(nsIDOMHTMLElement *aBody);
@ -1341,7 +1359,7 @@ interface nsIDOMWindowCollection : nsISupports
[ [
object, object,
uuid(7afa38e6-45a1-4f0b-ae84-997669d14059), uuid(39cb59d4-fba9-48a9-b70b-570a7ec2ebfa),
local local
] ]
interface nsIDOMWindow : nsISupports interface nsIDOMWindow : nsISupports
@ -1381,7 +1399,7 @@ interface nsIDOMWindow : nsISupports
nsresult Prompt(const nsAString *aMessage, const nsAString *aInitial, nsAString *_retval); nsresult Prompt(const nsAString *aMessage, const nsAString *aInitial, nsAString *_retval);
nsresult Print(); nsresult Print();
nsresult ShowModalDialog(const nsAString *aURI, nsIVariant *aArgs, const nsAString *aOptions, nsIVariant **_retval); nsresult ShowModalDialog(const nsAString *aURI, nsIVariant *aArgs, const nsAString *aOptions, nsIVariant **_retval);
nsresult PostMessageMoz(const long /*jsval*/ *message, const nsAString *targetOrigin, JSContext *cx); nsresult PostMessageMoz(const long /*jsval*/ *message, const nsAString *targetOrigin, const /*JS::Value*/ void *transfer, JSContext *cx);
nsresult Atob(const nsAString *aAsciiString, nsAString *_retval); nsresult Atob(const nsAString *aAsciiString, nsAString *_retval);
nsresult Btoa(const nsAString *aBase64Data, nsAString *_retval); nsresult Btoa(const nsAString *aBase64Data, nsAString *_retval);
nsresult GetSessionStorage(nsIDOMStorage **aSessionStorage); nsresult GetSessionStorage(nsIDOMStorage **aSessionStorage);
@ -1409,6 +1427,7 @@ interface nsIDOMWindow : nsISupports
nsresult GetOuterHeight(int32_t *aOuterHeight); nsresult GetOuterHeight(int32_t *aOuterHeight);
nsresult SetOuterHeight(int32_t aOuterHeight); nsresult SetOuterHeight(int32_t aOuterHeight);
nsresult GetComputedStyle(nsIDOMElement *elt, const nsAString *pseudoElt, nsIDOMCSSStyleDeclaration **_retval); nsresult GetComputedStyle(nsIDOMElement *elt, const nsAString *pseudoElt, nsIDOMCSSStyleDeclaration **_retval);
nsresult GetDefaultComputedStyle(nsIDOMElement *elt, const nsAString *pseudoElt, nsIDOMCSSStyleDeclaration **_retval);
nsresult GetWindowRoot(nsIDOMEventTarget **aWindowRoot); nsresult GetWindowRoot(nsIDOMEventTarget **aWindowRoot);
nsresult GetFrames(nsIDOMWindowCollection **aFrames); nsresult GetFrames(nsIDOMWindowCollection **aFrames);
nsresult GetTextZoom(float *aTextZoom); nsresult GetTextZoom(float *aTextZoom);
@ -1449,7 +1468,6 @@ interface nsIDOMWindow : nsISupports
nsresult MozCancelAnimationFrame(int32_t aHandle); nsresult MozCancelAnimationFrame(int32_t aHandle);
nsresult MozCancelRequestAnimationFrame(int32_t aHandle); nsresult MozCancelRequestAnimationFrame(int32_t aHandle);
nsresult GetMozAnimationStartTime(int64_t *aMozAnimationStartTime); nsresult GetMozAnimationStartTime(int64_t *aMozAnimationStartTime);
nsresult GetURL(nsIDOMMozURLProperty **aURL);
nsresult GetOnafterprint(JSContext *cx, jsval *aOnafterprint); nsresult GetOnafterprint(JSContext *cx, jsval *aOnafterprint);
nsresult SetOnafterprint(JSContext *cx, const jsval *aOnafterprint); nsresult SetOnafterprint(JSContext *cx, const jsval *aOnafterprint);
nsresult GetOnbeforeprint(JSContext *cx, jsval *aOnbeforeprint); nsresult GetOnbeforeprint(JSContext *cx, jsval *aOnbeforeprint);
@ -1569,7 +1587,7 @@ interface nsIDOMHTMLFormElement : nsIDOMHTMLElement
[ [
object, object,
uuid(e59a4df5-0904-414d-9203-9af2790698ea), uuid(83984fd0-b0b2-11e1-afa6-0800200c9a66),
local local
] ]
interface nsIDOMHTMLInputElement : nsIDOMHTMLElement interface nsIDOMHTMLInputElement : nsIDOMHTMLElement
@ -1604,6 +1622,8 @@ interface nsIDOMHTMLInputElement : nsIDOMHTMLElement
nsresult SetHeight(uint32_t aHeight); nsresult SetHeight(uint32_t aHeight);
nsresult GetIndeterminate(bool *aIndeterminate); nsresult GetIndeterminate(bool *aIndeterminate);
nsresult SetIndeterminate(bool aIndeterminate); nsresult SetIndeterminate(bool aIndeterminate);
nsresult GetInputmode(nsAString *aInputmode);
nsresult SetInputmode(const nsAString *aInputmode);
nsresult GetList(nsIDOMHTMLElement **aList); nsresult GetList(nsIDOMHTMLElement **aList);
nsresult GetMax(nsAString *aMax); nsresult GetMax(nsAString *aMax);
nsresult SetMax(const nsAString *aMax); nsresult SetMax(const nsAString *aMax);
@ -1641,6 +1661,8 @@ interface nsIDOMHTMLInputElement : nsIDOMHTMLElement
nsresult SetValue(const nsAString *aValue); nsresult SetValue(const nsAString *aValue);
nsresult GetValueAsNumber(double *aValueAsNumber); nsresult GetValueAsNumber(double *aValueAsNumber);
nsresult SetValueAsNumber(double aValueAsNumber); nsresult SetValueAsNumber(double aValueAsNumber);
nsresult GetValueAsDate(JSContext* cx, /*JS::Value*/ void *aValueAsDate);
nsresult SetValueAsDate(JSContext* cx, const /*JS::Value*/ void *aValueAsDate);
nsresult StepDown(int32_t n, uint8_t _argc); nsresult StepDown(int32_t n, uint8_t _argc);
nsresult StepUp(int32_t n, uint8_t _argc); nsresult StepUp(int32_t n, uint8_t _argc);
nsresult GetWillValidate(bool *aWillValidate); nsresult GetWillValidate(bool *aWillValidate);
@ -1690,7 +1712,42 @@ interface nsIDOMHTMLOptionElement : nsIDOMHTMLElement
[ [
object, object,
uuid(429b041b-06df-486c-9a3a-a1d901cc76a2), uuid(8e40d4d7-c204-4192-802a-0b5602e9c669),
local
]
interface nsIDOMHTMLButtonElement : nsIDOMHTMLElement
{
nsresult GetAutofocus(bool *aAutofocus);
nsresult SetAutofocus(bool aAutofocus);
nsresult GetDisabled(bool *aDisabled);
nsresult SetDisabled(bool aDisabled);
nsresult GetForm(nsIDOMHTMLFormElement **aForm);
nsresult GetFormAction(nsAString *aFormAction);
nsresult SetFormAction(const nsAString *aFormAction);
nsresult GetFormEnctype(nsAString *aFormEnctype);
nsresult SetFormEnctype(const nsAString *aFormEnctype);
nsresult GetFormMethod(nsAString *aFormMethod);
nsresult SetFormMethod(const nsAString *aFormMethod);
nsresult GetFormNoValidate(bool *aFormNoValidate);
nsresult SetFormNoValidate(bool aFormNoValidate);
nsresult GetFormTarget(nsAString *aFormTarget);
nsresult SetFormTarget(const nsAString *aFormTarget);
nsresult GetName(nsAString *aName);
nsresult SetName(const nsAString *aName);
nsresult GetType(nsAString *aType);
nsresult SetType(const nsAString *aType);
nsresult GetValue(nsAString *aValue);
nsresult SetValue(const nsAString *aValue);
nsresult GetWillValidate(bool *aWillValidate);
nsresult GetValidity(nsIDOMValidityState **aValidity);
nsresult GetValidationMessage(nsAString *aValidationMessage);
nsresult CheckValidity(bool *_retval);
nsresult SetCustomValidity(const nsAString *error);
}
[
object,
uuid(4173cc53-30f6-4d12-a770-981ba53164e2),
local local
] ]
interface nsIDOMHTMLOptionsCollection : nsISupports interface nsIDOMHTMLOptionsCollection : nsISupports
@ -1701,7 +1758,6 @@ interface nsIDOMHTMLOptionsCollection : nsISupports
nsresult SetLength(uint32_t aLength); nsresult SetLength(uint32_t aLength);
nsresult Item(uint32_t index, nsIDOMNode **_retval); nsresult Item(uint32_t index, nsIDOMNode **_retval);
nsresult NamedItem(const nsAString *name, nsIDOMNode **_retval); nsresult NamedItem(const nsAString *name, nsIDOMNode **_retval);
nsISupports* __cdecl GetNamedItem(const nsAString *name, nsWrapperCache **cache);
nsresult GetSelectedIndex(int32_t *aSelectedIndex); nsresult GetSelectedIndex(int32_t *aSelectedIndex);
nsresult SetSelectedIndex(int32_t aSelectedIndex); nsresult SetSelectedIndex(int32_t aSelectedIndex);
nsresult SetOption(uint32_t index, nsIDOMHTMLOptionElement *option); nsresult SetOption(uint32_t index, nsIDOMHTMLOptionElement *option);
@ -1870,7 +1926,7 @@ interface nsIDOMHTMLImageElement : nsIDOMHTMLElement
[ [
object, object,
uuid(68f49f8f-5ffd-44eb-a59f-d2b3f4817299), uuid(1339c36e-23ad-4047-a04c-1702e27c7c83),
local local
] ]
interface nsIDOMHTMLAnchorElement : nsIDOMHTMLElement interface nsIDOMHTMLAnchorElement : nsIDOMHTMLElement
@ -1881,6 +1937,8 @@ interface nsIDOMHTMLAnchorElement : nsIDOMHTMLElement
nsresult SetTarget(const nsAString *aTarget); nsresult SetTarget(const nsAString *aTarget);
nsresult GetPing(nsAString *aPing); nsresult GetPing(nsAString *aPing);
nsresult SetPing(const nsAString *aPing); nsresult SetPing(const nsAString *aPing);
nsresult GetDownload(nsAString *aPing);
nsresult SetDownload(const nsAString *aPing);
nsresult GetRel(nsAString *aRel); nsresult GetRel(nsAString *aRel);
nsresult SetRel(const nsAString *aRel); nsresult SetRel(const nsAString *aRel);
nsresult GetHreflang(nsAString *aHreflang); nsresult GetHreflang(nsAString *aHreflang);
@ -2141,7 +2199,7 @@ interface nsIDOMHTMLParamElement : nsIDOMHTMLElement
[ [
object, object,
uuid(830d9170-f8eb-4749-b721-16d60d6b0f1b), uuid(f9db1001-faae-46e1-b85f-0a0afb80c5b2),
local local
] ]
interface nsIDOMHTMLStyleElement : nsIDOMHTMLElement interface nsIDOMHTMLStyleElement : nsIDOMHTMLElement
@ -2152,6 +2210,8 @@ interface nsIDOMHTMLStyleElement : nsIDOMHTMLElement
nsresult SetMedia(const nsAString *aMedia); nsresult SetMedia(const nsAString *aMedia);
nsresult GetType(nsAString *aType); nsresult GetType(nsAString *aType);
nsresult SetType(const nsAString *aType); nsresult SetType(const nsAString *aType);
nsresult GetScoped(bool *aScoped);
nsresult SetScoped(bool aScoped);
nsresult GetDOMStyleSheet(nsIDOMStyleSheet **aDOMStyleSheet); nsresult GetDOMStyleSheet(nsIDOMStyleSheet **aDOMStyleSheet);
} }
@ -2232,7 +2292,7 @@ typedef void* nativeWindow;
[ [
object, object,
uuid(9da319f3-eee6-4504-81a5-6a19cf6215bf), uuid(9da319f3-eee6-4504-81a5-6A19cf6215bf),
local local
] ]
interface nsIBaseWindow : nsISupports interface nsIBaseWindow : nsISupports
@ -2264,17 +2324,32 @@ interface nsIBaseWindow : nsISupports
nsresult SetTitle(const PRUnichar *aTitle); nsresult SetTitle(const PRUnichar *aTitle);
} }
cpp_quote("#define LOAD_FLAGS_NONE 0x00000000")
cpp_quote("#define LOAD_REPLACE 0x00040000")
cpp_quote("#define LOAD_INITIAL_DOCUMENT_URI 0x00080000")
[ [
object, object,
uuid(f5d9e7b0-d930-11d3-b057-00a024ffc08c), uuid(28404f7e-0f17-4dc3-a21a-2074d8659b02),
local local
] ]
interface nsIWebNavigation : nsISupports interface nsIWebNavigation : nsISupports
{ {
const UINT LOAD_FLAGS_MASK = 0xffff;
const UINT LOAD_FLAGS_NONE = 0;
const UINT LOAD_FLAGS_IS_REFRESH = 0x0010;
const UINT LOAD_FLAGS_IS_LINK = 0x0020;
const UINT LOAD_FLAGS_BYPASS_HISTORY = 0x0040;
const UINT LOAD_FLAGS_REPLACE_HISTORY = 0x0080;
const UINT LOAD_FLAGS_BYPASS_CACHE = 0x0100;
const UINT LOAD_FLAGS_BYPASS_PROXY = 0x0200;
const UINT LOAD_FLAGS_CHARSET_CHANGE = 0x0400;
const UINT LOAD_FLAGS_STOP_CONTENT = 0x0800;
const UINT LOAD_FLAGS_FROM_EXTERNAL = 0x1000;
const UINT LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP = 0x2000;
const UINT LOAD_FLAGS_FIRST_LOAD = 0x4000;
const UINT LOAD_FLAGS_ALLOW_POPUPS = 0x8000;
const UINT LOAD_FLAGS_BYPASS_CLASSIFIER = 0x10000;
const UINT LOAD_FLAGS_FORCE_ALLOW_COOKIES = 0x20000;
const UINT LOAD_FLAGS_DISALLOW_INHERIT_OWNER = 0x40000;
const UINT LOAD_FLAGS_URI_IS_UTF8 = 0x80000;
nsresult GetCanGoBack(bool *aCanGoBack); nsresult GetCanGoBack(bool *aCanGoBack);
nsresult GetCanGoForward(bool *aCanGoForward); nsresult GetCanGoForward(bool *aCanGoForward);
nsresult GoBack(); nsresult GoBack();
@ -2306,7 +2381,7 @@ interface nsIWebProgress : nsISupports
[ [
object, object,
uuid(4404c94b-0506-4255-9e3c-4582dba6cfbb), uuid(a65cfa37-b381-4fe9-81b7-db08853f54ad),
local local
] ]
interface nsIPrintSettings : nsISupports interface nsIPrintSettings : nsISupports
@ -2431,6 +2506,8 @@ interface nsIPrintSettings : nsISupports
nsresult SetIsInitializedFromPrinter(bool aIsInitializedFromPrinter); nsresult SetIsInitializedFromPrinter(bool aIsInitializedFromPrinter);
nsresult GetIsInitializedFromPrefs(bool *aIsInitializedFromPrefs); nsresult GetIsInitializedFromPrefs(bool *aIsInitializedFromPrefs);
nsresult SetIsInitializedFromPrefs(bool aIsInitializedFromPrefs); nsresult SetIsInitializedFromPrefs(bool aIsInitializedFromPrefs);
nsresult GetPersistMarginBoxSettings(bool *aPersistMarginBoxSettings);
nsresult SetPersistMarginBoxSettings(bool aPersistMarginBoxSettings);
nsresult SetMarginInTwips(nsIntMargin *aMargin); nsresult SetMarginInTwips(nsIntMargin *aMargin);
nsresult SetEdgeInTwips(nsIntMargin *aEdge); nsresult SetEdgeInTwips(nsIntMargin *aEdge);
nsresult GetMarginInTwips(nsIntMargin *aMargin); nsresult GetMarginInTwips(nsIntMargin *aMargin);
@ -2593,7 +2670,7 @@ interface nsIComponentManager : nsISupports
[ [
object, object,
uuid(7df46a54-d8b0-448e-903c-4341a1b2499c), uuid(55d25e49-793f-4727-a69f-de8b15f4b985),
local local
] ]
interface nsIPrefBranch : nsISupports interface nsIPrefBranch : nsISupports
@ -2643,7 +2720,7 @@ interface nsIDirectoryServiceProvider2 : nsIDirectoryServiceProvider
[ [
object, object,
uuid(15fd6940-8ea7-11d3-93ad-00104ba0fd40), uuid(f5753fec-a051-4ddc-8891-11f1f1575072),
local local
] ]
interface nsIProtocolHandler : nsISupports interface nsIProtocolHandler : nsISupports
@ -2772,7 +2849,7 @@ interface nsIDOMEventTarget : nsISupports
[ [
object, object,
uuid(270c945b-8a65-4170-bc0b-4ec1443cd39f), uuid(c939eab8-1345-4344-875b-e0f2d8d89171),
local local
] ]
interface nsIDOMEvent : nsISupports interface nsIDOMEvent : nsISupports
@ -2799,14 +2876,14 @@ interface nsIDOMEvent : nsISupports
nsresult SetTarget(nsIDOMEventTarget *aTarget); nsresult SetTarget(nsIDOMEventTarget *aTarget);
bool IsDispatchStopped(); bool IsDispatchStopped();
/*nsEvent*/ void *GetInternalNSEvent(); /*nsEvent*/ void *GetInternalNSEvent();
nsresult SetTrusted(bool aTrusted); void SetTrusted(bool aTrusted);
void Serialize(/*IPC::Message*/ void *aMsg, bool aSerializeInterfaceType); void Serialize(/*IPC::Message*/ void *aMsg, bool aSerializeInterfaceType);
bool Deserialize(const /*IPC::Message*/ void *aMsg, void **aIter); bool Deserialize(const /*IPC::Message*/ void *aMsg, void **aIter);
} }
[ [
object, object,
uuid(ed36f965-173c-4101-a615-63b44f51ed90), uuid(16b3bdcc-75d4-11e2-8a20-aaff78957a39),
local local
] ]
interface nsIDOMWindowUtils : nsISupports interface nsIDOMWindowUtils : nsISupports
@ -2821,11 +2898,13 @@ interface nsIDOMWindowUtils : nsISupports
nsresult GetViewportInfo(uint32_t aDisplayWidth, uint32_t aDisplayHeight, double *aDefaultZoom, bool *aAllowZoom, nsresult GetViewportInfo(uint32_t aDisplayWidth, uint32_t aDisplayHeight, double *aDefaultZoom, bool *aAllowZoom,
double *aMinZoom, double *aMaxZoom, uint32_t *aWidth, uint32_t *aHeight, bool *aAutoSize); double *aMinZoom, double *aMaxZoom, uint32_t *aWidth, uint32_t *aHeight, bool *aAutoSize);
nsresult SetDisplayPortForElement(float aXPx, float aYPx, float aWidthPx, float aHeightPx, nsIDOMElement *aElement); nsresult SetDisplayPortForElement(float aXPx, float aYPx, float aWidthPx, float aHeightPx, nsIDOMElement *aElement);
nsresult SetCriticalDisplayPortForElement(float aXPx, float aYPx, float aWidthPx, float aHeightPx, nsIDOMElement *aElement);
nsresult SetResolution(float aXResolution, float aYResolution); nsresult SetResolution(float aXResolution, float aYResolution);
nsresult GetResolution(float *aXResolution, float *aYResolution);
nsresult GetIsFirstPaint(bool *aIsFirstPaint); nsresult GetIsFirstPaint(bool *aIsFirstPaint);
nsresult SetIsFirstPaint(bool aIsFirstPaint); nsresult SetIsFirstPaint(bool aIsFirstPaint);
nsresult SendMouseEvent(const nsAString *aType, float aX, float aY, int32_t aButton, int32_t aClickCount, nsresult SendMouseEvent(const nsAString *aType, float aX, float aY, int32_t aButton, int32_t aClickCount,
int32_t aModifiers, bool aIgnoreRootScrollFrame, float aPressure, uint16_t aInputSourceArg); int32_t aModifiers, bool aIgnoreRootScrollFrame, float aPressure, uint16_t aInputSourceArg, bool *_retval);
nsresult SendTouchEvent(const nsAString *aType, uint32_t *aIdentifiers, int32_t *aXs, int32_t *aYs, nsresult SendTouchEvent(const nsAString *aType, uint32_t *aIdentifiers, int32_t *aXs, int32_t *aYs,
uint32_t *aRxs, uint32_t *aRys, float *aRotationAngles, float *aForces, uint32_t count, int32_t aModifiers, uint32_t *aRxs, uint32_t *aRys, float *aRotationAngles, float *aForces, uint32_t count, int32_t aModifiers,
bool aIgnoreRootScrollFrame, bool *_retval); bool aIgnoreRootScrollFrame, bool *_retval);
@ -2858,12 +2937,14 @@ interface nsIDOMWindowUtils : nsISupports
nsresult ClearMozAfterPaintEvents(); nsresult ClearMozAfterPaintEvents();
nsresult DisableNonTestMouseEvents(bool aDisable); nsresult DisableNonTestMouseEvents(bool aDisable);
nsresult GetScrollXY(bool aFlushLayout, int32_t *aScrollX, int32_t *aScrollY); nsresult GetScrollXY(bool aFlushLayout, int32_t *aScrollX, int32_t *aScrollY);
nsresult GetScrollbarWidth(bool aFlushLayout, int32_t *_retval);
nsresult GetRootBounds(nsIDOMClientRect **_retval); nsresult GetRootBounds(nsIDOMClientRect **_retval);
nsresult GetIMEIsOpen(bool *aIMEIsOpen); nsresult GetIMEIsOpen(bool *aIMEIsOpen);
nsresult GetIMEStatus(uint32_t *aIMEStatus); nsresult GetIMEStatus(uint32_t *aIMEStatus);
nsresult GetScreenPixelsPerCSSPixel(float *aScreenPixelsPerCSSPixel); nsresult GetScreenPixelsPerCSSPixel(float *aScreenPixelsPerCSSPixel);
nsresult GetFullZoom(float *aFullZoom); nsresult GetFullZoom(float *aFullZoom);
nsresult DispatchDOMEventViaPresShell(nsIDOMNode *aTarget, nsIDOMEvent *aEvent, bool aTrusted, bool *_retval); nsresult DispatchDOMEventViaPresShell(nsIDOMNode *aTarget, nsIDOMEvent *aEvent, bool aTrusted, bool *_retval);
nsresult DispatchEventToChromeOnly(nsIDOMEventTarget *aTarget, nsIDOMEvent *aEvent, bool *_retval);
nsresult GetClassName(const /*JS::Value*/ void *aObject, JSContext *cx, char **_retval); nsresult GetClassName(const /*JS::Value*/ void *aObject, JSContext *cx, char **_retval);
nsresult SendContentCommandEvent(const nsAString *aType, nsITransferable *aTransferable); nsresult SendContentCommandEvent(const nsAString *aType, nsITransferable *aTransferable);
nsresult SendCompositionEvent(const nsAString *aType, const nsAString *aData, const nsAString *aLocale); nsresult SendCompositionEvent(const nsAString *aType, const nsAString *aData, const nsAString *aLocale);
@ -2890,8 +2971,8 @@ interface nsIDOMWindowUtils : nsISupports
nsresult SuspendTimeouts(); nsresult SuspendTimeouts();
nsresult ResumeTimeouts(); nsresult ResumeTimeouts();
nsresult GetLayerManagerType(nsAString *aLayerManagerType); nsresult GetLayerManagerType(nsAString *aLayerManagerType);
nsresult StartFrameTimeRecording(); nsresult StartFrameTimeRecording(uint32_t *startIndex);
nsresult StopFrameTimeRecording(uint32_t *frameCount, float **frameTime); nsresult StopFrameTimeRecording(uint32_t startIndex, float **paintTimes, uint32_t *frameCount, float **frameIntervals);
nsresult BeginTabSwitch(); nsresult BeginTabSwitch();
nsresult GetDisplayDPI(float *aDisplayDPI); nsresult GetDisplayDPI(float *aDisplayDPI);
nsresult GetOuterWindowWithId(uint64_t aOuterWindowID, nsIDOMWindow **_retval); nsresult GetOuterWindowWithId(uint64_t aOuterWindowID, nsIDOMWindow **_retval);
@ -2929,6 +3010,7 @@ interface nsIDOMWindowUtils : nsISupports
nsresult RemoveSheet(nsIURI *sheetURI, uint32_t type); nsresult RemoveSheet(nsIURI *sheetURI, uint32_t type);
nsresult GetIsHandlingUserInput(bool *aIsHandlingUserInput); nsresult GetIsHandlingUserInput(bool *aIsHandlingUserInput);
nsresult AllowScriptsToClose(); nsresult AllowScriptsToClose();
nsresult IsNodeDisabledForEvents(nsIDOMNode *aNode, bool *_retval);
} }
cpp_quote("#define CONTEXT_NONE 0x00") cpp_quote("#define CONTEXT_NONE 0x00")
@ -2951,7 +3033,7 @@ interface nsIContextMenuListener : nsISupports
[ [
object, object,
uuid(415453e6-132a-4902-9a99-cc480f0311b6), uuid(d73852f8-7bd6-477d-8233-117dbf83860b),
local local
] ]
interface nsIDOMUIEvent : nsIDOMEvent interface nsIDOMUIEvent : nsIDOMEvent
@ -2974,7 +3056,7 @@ interface nsIDOMUIEvent : nsIDOMEvent
[ [
object, object,
uuid(796c3436-5f89-4145-be3a-49808c09fdc6), uuid(afb2e57b-2822-4969-b2a9-0cada6859534),
local local
] ]
interface nsIDOMMouseEvent : nsIDOMUIEvent interface nsIDOMMouseEvent : nsIDOMUIEvent
@ -3009,7 +3091,7 @@ interface nsIDOMMouseEvent : nsIDOMUIEvent
[ [
object, object,
uuid(5d116380-8432-48cb-a717-200f04c39d2f), uuid(ffbe684c-ca90-4b58-aa8c-9727f997f86d),
local local
] ]
interface nsIDOMKeyEvent : nsIDOMUIEvent interface nsIDOMKeyEvent : nsIDOMUIEvent
@ -3205,7 +3287,7 @@ interface nsIController : nsISupports
[ [
object, object,
uuid(e2985850-81ca-4b5d-b0f3-e395d50d8564), uuid(8a8b4b1d-72d8-428e-9575-f918baf69ea1),
local local
] ]
interface nsIContent : nsISupports interface nsIContent : nsISupports
@ -3215,7 +3297,7 @@ interface nsIContent : nsISupports
[ [
object, object,
uuid(0e1324c9-c997-447e-bcd9-a657802991e4), uuid(4e6f7d97-091e-4eda-b7d6-feb0b8012a93),
local local
] ]
interface nsIDocument : nsISupports interface nsIDocument : nsISupports
@ -3249,7 +3331,7 @@ interface nsIContentSerializer : nsISupports
[ [
object, object,
uuid(12efa18c-920a-47cd-94a1-4052f245f76c), uuid(753b38d1-ee03-4e58-a650-1076ccccdb7f),
local local
] ]
interface nsIEditor : nsISupports interface nsIEditor : nsISupports
@ -3324,8 +3406,8 @@ interface nsIEditor : nsISupports
nsresult SwitchTextDirection(); nsresult SwitchTextDirection();
nsresult OutputToString([in] nsAString formatType, [in] uint32_t flags, [out] nsAString *_retval); nsresult OutputToString([in] nsAString formatType, [in] uint32_t flags, [out] nsAString *_retval);
nsresult OutputToStream([in] nsIOutputStream *aStream, [in] nsAString *formatType, [in] nsACString *charsetOverride, [in] uint32_t flags); nsresult OutputToStream([in] nsIOutputStream *aStream, [in] nsAString *formatType, [in] nsACString *charsetOverride, [in] uint32_t flags);
nsresult SetEditorObserver(void /* EditActionListener*/ *observer); nsresult SetEditorObserver(nsIEditorObserver *observer);
nsresult RemoveEditorObserver(); nsresult RemoveEditorObserver(nsIEditorObserver *observer);
nsresult AddEditActionListener([in] nsIEditActionListener *listener); nsresult AddEditActionListener([in] nsIEditActionListener *listener);
nsresult RemoveEditActionListener([in] nsIEditActionListener *listener); nsresult RemoveEditActionListener([in] nsIEditActionListener *listener);
nsresult AddDocumentStateListener([in] nsIDocumentStateListener *listener); nsresult AddDocumentStateListener([in] nsIDocumentStateListener *listener);
@ -3402,26 +3484,64 @@ interface nsIHTMLEditor : nsISupports
void /*Element*/ *GetActiveEditingHost(); void /*Element*/ *GetActiveEditingHost();
} }
interface nsIDocShellTreeItem;
[ [
object, object,
uuid(318ce516-3f7a-41f6-8f3d-3661650f7a46), uuid(37f1ab73-f224-44b1-82f0-d2834ab1cec0),
local local
] ]
interface nsIDocShell : nsISupports interface nsIDocShellTreeNode : nsISupports
{
nsresult GetChildCount(int32_t *aChildCount);
nsresult AddChild(nsIDocShellTreeItem *child);
nsresult RemoveChild(nsIDocShellTreeItem *child);
nsresult GetChildAt(int32_t index, nsIDocShellTreeItem **_retval);
nsresult FindChildWithName(const PRUnichar *aName, bool aRecurse, bool aSameType, nsIDocShellTreeItem *aRequestor,
nsIDocShellTreeItem *aOriginalRequestor, nsIDocShellTreeItem **_retval);
}
[
object,
uuid(09b54ec1-d98a-49a9-bc95-3219e8b55089),
local
]
interface nsIDocShellTreeItem : nsIDocShellTreeNode
{
nsresult GetName(PRUnichar **aName);
nsresult SetName(const PRUnichar *aName);
nsresult NameEquals(const PRUnichar *name, bool *_retval);
nsresult GetItemType(int32_t *aItemType);
nsresult SetItemType(int32_t aItemType);
nsresult GetParent(nsIDocShellTreeItem **aParent);
nsresult GetSameTypeParent(nsIDocShellTreeItem **aSameTypeParent);
nsresult GetRootTreeItem(nsIDocShellTreeItem **aRootTreeItem);
nsresult GetSameTypeRootTreeItem(nsIDocShellTreeItem **aSameTypeRootTreeItem);
nsresult FindItemWithName(const PRUnichar *name, nsISupports *aRequestor, nsIDocShellTreeItem *aOriginalRequestor, nsIDocShellTreeItem **_retval);
nsresult GetTreeOwner(nsIDocShellTreeOwner **aTreeOwner);
nsresult SetTreeOwner(nsIDocShellTreeOwner *treeOwner);
}
[
object,
uuid(e8f6f3e5-8cee-4be3-8d56-5ed617305bf8),
local
]
interface nsIDocShell : nsIDocShellTreeItem
{ {
nsresult LoadURI(nsIURI *uri, nsIDocShellLoadInfo *loadInfo, uint32_t aLoadFlags, bool firstParty); nsresult LoadURI(nsIURI *uri, nsIDocShellLoadInfo *loadInfo, uint32_t aLoadFlags, bool firstParty);
nsresult LoadStream(nsIInputStream *aStream, nsIURI *aURI, const nsACString *aContentType, nsresult LoadStream(nsIInputStream *aStream, nsIURI *aURI, const nsACString *aContentType,
const nsACString *aContentCharset, nsIDocShellLoadInfo *aLoadInfo); const nsACString *aContentCharset, nsIDocShellLoadInfo *aLoadInfo);
nsresult InternalLoad(nsIURI *aURI, nsIURI *aReferrer, nsISupports *aOwner, uint32_t aFlags, const PRUnichar *aWindowTarget, nsresult InternalLoad(nsIURI *aURI, nsIURI *aReferrer, nsISupports *aOwner, uint32_t aFlags, const PRUnichar *aWindowTarget,
const char *aTypeHint, nsIInputStream *aPostDataStream, nsIInputStream *aHeadersStream, uint32_t aLoadFlags, const char *aTypeHint, nsACString *aFileName, nsIInputStream *aPostDataStream, nsIInputStream *aHeadersStream,
nsISHEntry *aSHEntry, bool firstParty, nsIDocShell **aDocShell, nsIRequest **aRequest); uint32_t aLoadFlags, nsISHEntry *aSHEntry, bool firstParty, nsIDocShell **aDocShell, nsIRequest **aRequest);
nsresult AddState(nsIVariant *aData, const nsAString *aTitle, const nsAString *aURL, bool aReplace, JSContext *cx); nsresult AddState(nsIVariant *aData, const nsAString *aTitle, const nsAString *aURL, bool aReplace, JSContext *cx);
nsresult CreateLoadInfo(nsIDocShellLoadInfo **loadInfo); nsresult CreateLoadInfo(nsIDocShellLoadInfo **loadInfo);
nsresult PrepareForNewContentModel(); nsresult PrepareForNewContentModel();
nsresult SetCurrentURI(nsIURI *aURI); nsresult SetCurrentURI(nsIURI *aURI);
nsresult FirePageHideNotification(bool isUnload); nsresult FirePageHideNotification(bool isUnload);
nsresult GetPresContext(void /*nsPresContext*/ **aPresContext); nsresult GetPresContext(void /*nsPresContext*/ **aPresContext);
nsresult GetPresShell(nsIPresShell **aPresShell); nsIPresShell *GetPresShell();
nsresult GetEldestPresShell(nsIPresShell **aEldestPresShell); nsresult GetEldestPresShell(nsIPresShell **aEldestPresShell);
nsresult GetContentViewer(nsIContentViewer **aContentViewer); nsresult GetContentViewer(nsIContentViewer **aContentViewer);
nsresult GetChromeEventHandler(nsIDOMEventTarget **aChromeEventHandler); nsresult GetChromeEventHandler(nsIDOMEventTarget **aChromeEventHandler);
@ -3483,6 +3603,10 @@ interface nsIDocShell : nsISupports
nsresult SetChildOffset(uint32_t offset); nsresult SetChildOffset(uint32_t offset);
nsresult GetIsInUnload(bool *aIsInUnload); nsresult GetIsInUnload(bool *aIsInUnload);
nsresult GetChannelIsUnsafe(bool *aChannelIsUnsafe); nsresult GetChannelIsUnsafe(bool *aChannelIsUnsafe);
nsresult GetHasMixedActiveContentLoaded(bool *aHasMixedActiveContentLoaded);
nsresult GetHasMixedActiveContentBlocked(bool *aHasMixedActiveContentBlocked);
nsresult GetHasMixedDisplayContentLoaded(bool *aHasMixedDisplayContentLoaded);
nsresult GetHasMixedDisplayContentBlocked(bool *aHasMixedDisplayContentBlocked);
void DetachEditorFromWindow(); void DetachEditorFromWindow();
nsresult GetIsOffScreenBrowser(bool *aIsOffScreenBrowser); nsresult GetIsOffScreenBrowser(bool *aIsOffScreenBrowser);
nsresult SetIsOffScreenBrowser(bool aIsOffScreenBrowser); nsresult SetIsOffScreenBrowser(bool aIsOffScreenBrowser);
@ -3515,9 +3639,20 @@ interface nsIDocShell : nsISupports
nsresult GetAsyncPanZoomEnabled(bool *aAsyncPanZoomEnabled); nsresult GetAsyncPanZoomEnabled(bool *aAsyncPanZoomEnabled);
nsresult GetSandboxFlags(uint32_t *aSandboxFlags); nsresult GetSandboxFlags(uint32_t *aSandboxFlags);
nsresult SetSandboxFlags(uint32_t aSandboxFlags); nsresult SetSandboxFlags(uint32_t aSandboxFlags);
nsresult GetMixedContentChannel(nsIChannel **aMixedContentChannel);
nsresult SetMixedContentChannel(nsIChannel *aMixedContentChannel);
nsresult GetAllowMixedContentAndConnectionData(bool *rootHasSecureConnection, bool *allowMixedContent, bool *isRootDocShell);
bool PluginsAllowedInCurrentDoc(); bool PluginsAllowedInCurrentDoc();
nsresult GetFullscreenAllowed(bool *aFullscreenAllowed); nsresult GetFullscreenAllowed(bool *aFullscreenAllowed);
nsresult SetFullscreenAllowed(bool allowed); nsresult SetFullscreenAllowed(bool allowed);
nsresult GetAffectPrivateSessionLifetime(bool *aAffectPrivateSessionLifetime);
nsresult SetAffectPrivateSessionLifetime(bool aAffectPrivateSessionLifetime);
nsresult GetMayEnableCharacterEncodingMenu(bool *aMayEnableCharacterEncodingMenu);
nsresult GetEditor(nsIEditor **aEditor);
nsresult SetEditor(nsIEditor *aEditor);
nsresult GetEditable(bool *aEditable);
nsresult GetHasEditingSession(bool *aHasEditingSession);
nsresult MakeEditable(bool inWaitForUriLoad);
} }
[ [
@ -3619,13 +3754,6 @@ interface nsIDocumentObserver : nsIMutationObserver
void AttemptToExecuteScript(nsIContent *aContent, nsIParser *aParser, bool *aBlock); void AttemptToExecuteScript(nsIContent *aContent, nsIParser *aParser, bool *aBlock);
} }
[
object,
uuid(c61eac14-5f7a-4481-965e-7eaa6effa85f),
local
]
interface nsCycleCollectionISupports {}
[ [
object, object,
uuid(3682dd99-8560-44f4-9b8f-ccce9d7b96fb), uuid(3682dd99-8560-44f4-9b8f-ccce9d7b96fb),
@ -3651,3 +3779,5 @@ interface nsIPluginInstance : nsISupports
{ {
nsresult GetDOMElement(nsIDOMElement **aDOMElement); nsresult GetDOMElement(nsIDOMElement **aDOMElement);
} }
cpp_quote("DEFINE_GUID(IID_nsCycleCollectionISupports, 0xc61eac14,0x5f7a,0x4481,0x96,0x5e,0x7e,0xaa,0x6e,0xff,0xa8,0x5f);")

View file

@ -837,7 +837,7 @@ static nsresult NSAPI nsChannel_SetContentCharset(nsIHttpChannel *iface,
return NS_OK; return NS_OK;
} }
static nsresult NSAPI nsChannel_GetContentLength(nsIHttpChannel *iface, LONG *aContentLength) static nsresult NSAPI nsChannel_GetContentLength(nsIHttpChannel *iface, INT64 *aContentLength)
{ {
nsChannel *This = impl_from_nsIHttpChannel(iface); nsChannel *This = impl_from_nsIHttpChannel(iface);
@ -846,11 +846,11 @@ static nsresult NSAPI nsChannel_GetContentLength(nsIHttpChannel *iface, LONG *aC
return NS_ERROR_NOT_IMPLEMENTED; return NS_ERROR_NOT_IMPLEMENTED;
} }
static nsresult NSAPI nsChannel_SetContentLength(nsIHttpChannel *iface, LONG aContentLength) static nsresult NSAPI nsChannel_SetContentLength(nsIHttpChannel *iface, INT64 aContentLength)
{ {
nsChannel *This = impl_from_nsIHttpChannel(iface); nsChannel *This = impl_from_nsIHttpChannel(iface);
FIXME("(%p)->(%d)\n", This, aContentLength); FIXME("(%p)->(%s)\n", This, wine_dbgstr_longlong(aContentLength));
return NS_ERROR_NOT_IMPLEMENTED; return NS_ERROR_NOT_IMPLEMENTED;
} }
@ -1385,6 +1385,15 @@ static nsresult NSAPI nsChannel_IsNoCacheResponse(nsIHttpChannel *iface, cpp_boo
return NS_ERROR_NOT_IMPLEMENTED; return NS_ERROR_NOT_IMPLEMENTED;
} }
static nsresult NSAPI nsChannel_RedirectTo(nsIHttpChannel *iface, nsIURI *aNewURI)
{
nsChannel *This = impl_from_nsIHttpChannel(iface);
FIXME("(%p)->(%p)\n", This, aNewURI);
return NS_ERROR_NOT_IMPLEMENTED;
}
static const nsIHttpChannelVtbl nsChannelVtbl = { static const nsIHttpChannelVtbl nsChannelVtbl = {
nsChannel_QueryInterface, nsChannel_QueryInterface,
nsChannel_AddRef, nsChannel_AddRef,
@ -1438,7 +1447,8 @@ static const nsIHttpChannelVtbl nsChannelVtbl = {
nsChannel_SetResponseHeader, nsChannel_SetResponseHeader,
nsChannel_VisitResponseHeaders, nsChannel_VisitResponseHeaders,
nsChannel_IsNoStoreResponse, nsChannel_IsNoStoreResponse,
nsChannel_IsNoCacheResponse nsChannel_IsNoCacheResponse,
nsChannel_RedirectTo
}; };
static inline nsChannel *impl_from_nsIUploadChannel(nsIUploadChannel *iface) static inline nsChannel *impl_from_nsIUploadChannel(nsIUploadChannel *iface)
@ -1722,6 +1732,34 @@ static nsresult NSAPI nsHttpChannelInternal_SetAllowSpdy(nsIHttpChannelInternal
return NS_ERROR_NOT_IMPLEMENTED; return NS_ERROR_NOT_IMPLEMENTED;
} }
static nsresult NSAPI nsHttpChannelInternal_GetLoadAsBlocking(nsIHttpChannelInternal *iface, cpp_bool *aLoadAsBlocking)
{
nsChannel *This = impl_from_nsIHttpChannelInternal(iface);
FIXME("(%p)->(%p)\n", This, aLoadAsBlocking);
return NS_ERROR_NOT_IMPLEMENTED;
}
static nsresult NSAPI nsHttpChannelInternal_SetLoadAsBlocking(nsIHttpChannelInternal *iface, cpp_bool aLoadAsBlocking)
{
nsChannel *This = impl_from_nsIHttpChannelInternal(iface);
FIXME("(%p)->(%x)\n", This, aLoadAsBlocking);
return NS_ERROR_NOT_IMPLEMENTED;
}
static nsresult NSAPI nsHttpChannelInternal_GetLoadUnblocked(nsIHttpChannelInternal *iface, cpp_bool *aLoadUnblocked)
{
nsChannel *This = impl_from_nsIHttpChannelInternal(iface);
FIXME("(%p)->(%p)\n", This, aLoadUnblocked);
return NS_ERROR_NOT_IMPLEMENTED;
}
static nsresult NSAPI nsHttpChannelInternal_SetLoadUnblocked(nsIHttpChannelInternal *iface, cpp_bool aLoadUnblocked)
{
nsChannel *This = impl_from_nsIHttpChannelInternal(iface);
FIXME("(%p)->(%x)\n", This, aLoadUnblocked);
return NS_ERROR_NOT_IMPLEMENTED;
}
static const nsIHttpChannelInternalVtbl nsHttpChannelInternalVtbl = { static const nsIHttpChannelInternalVtbl nsHttpChannelInternalVtbl = {
nsHttpChannelInternal_QueryInterface, nsHttpChannelInternal_QueryInterface,
nsHttpChannelInternal_AddRef, nsHttpChannelInternal_AddRef,
@ -1744,7 +1782,11 @@ static const nsIHttpChannelInternalVtbl nsHttpChannelInternalVtbl = {
nsHttpChannelInternal_SetCacheKeysRedirectChain, nsHttpChannelInternal_SetCacheKeysRedirectChain,
nsHttpChannelInternal_HTTPUpgrade, nsHttpChannelInternal_HTTPUpgrade,
nsHttpChannelInternal_GetAllowSpdy, nsHttpChannelInternal_GetAllowSpdy,
nsHttpChannelInternal_SetAllowSpdy nsHttpChannelInternal_SetAllowSpdy,
nsHttpChannelInternal_GetLoadAsBlocking,
nsHttpChannelInternal_SetLoadAsBlocking,
nsHttpChannelInternal_GetLoadUnblocked,
nsHttpChannelInternal_SetLoadUnblocked
}; };
@ -1907,10 +1949,10 @@ static nsresult NSAPI nsURI_SetSpec(nsIFileURL *iface, const nsACString *aSpec)
if(!spec) if(!spec)
return NS_ERROR_OUT_OF_MEMORY; return NS_ERROR_OUT_OF_MEMORY;
hres = CreateUri(spec, 0, 0, &uri); hres = create_uri(spec, 0, &uri);
heap_free(spec); heap_free(spec);
if(FAILED(hres)) { if(FAILED(hres)) {
WARN("CreateUri failed: %08x\n", hres); WARN("create_uri failed: %08x\n", hres);
return NS_ERROR_FAILURE; return NS_ERROR_FAILURE;
} }
@ -2920,19 +2962,12 @@ static nsresult create_nsuri(IUri *iuri, HTMLOuterWindow *window, NSContainer *c
return NS_OK; return NS_OK;
} }
HRESULT create_doc_uri(HTMLOuterWindow *window, const WCHAR *url, nsWineURI **ret) HRESULT create_doc_uri(HTMLOuterWindow *window, IUri *iuri, nsWineURI **ret)
{ {
nsWineURI *uri; nsWineURI *uri;
IUri *iuri;
nsresult nsres; nsresult nsres;
HRESULT hres;
hres = CreateUri(url, 0, 0, &iuri);
if(FAILED(hres))
return hres;
nsres = create_nsuri(iuri, window, window->doc_obj->nscontainer, NULL, &uri); nsres = create_nsuri(iuri, window, window->doc_obj->nscontainer, NULL, &uri);
IUri_Release(iuri);
if(NS_FAILED(nsres)) if(NS_FAILED(nsres))
return E_FAIL; return E_FAIL;
@ -2977,7 +3012,7 @@ HRESULT create_redirect_nschannel(const WCHAR *url, nsChannel *orig_channel, nsC
nsresult nsres; nsresult nsres;
HRESULT hres; HRESULT hres;
hres = CreateUri(url, 0, 0, &iuri); hres = create_uri(url, 0, &iuri);
if(FAILED(hres)) if(FAILED(hres))
return hres; return hres;
@ -3290,9 +3325,9 @@ static nsresult NSAPI nsIOService_NewURI(nsIIOService *iface, const nsACString *
if(FAILED(hres)) if(FAILED(hres))
WARN("CoInternetCombineUrlEx failed: %08x\n", hres); WARN("CoInternetCombineUrlEx failed: %08x\n", hres);
}else { }else {
hres = CreateUri(new_spec, 0, 0, &urlmon_uri); hres = create_uri(new_spec, 0, &urlmon_uri);
if(FAILED(hres)) if(FAILED(hres))
WARN("CreateUri failed: %08x\n", hres); WARN("create_uri failed: %08x\n", hres);
} }
if(FAILED(hres)) if(FAILED(hres))

View file

@ -595,109 +595,12 @@ static HRESULT exec_browsemode(HTMLDocument *This, DWORD cmdexecopt, VARIANT *in
static HRESULT exec_editmode(HTMLDocument *This, DWORD cmdexecopt, VARIANT *in, VARIANT *out) static HRESULT exec_editmode(HTMLDocument *This, DWORD cmdexecopt, VARIANT *in, VARIANT *out)
{ {
IMoniker *mon;
HRESULT hres;
TRACE("(%p)->(%08x %p %p)\n", This, cmdexecopt, in, out); TRACE("(%p)->(%08x %p %p)\n", This, cmdexecopt, in, out);
if(in || out) if(in || out)
FIXME("unsupported args\n"); FIXME("unsupported args\n");
if(This->doc_obj->usermode == EDITMODE) return setup_edit_mode(This->doc_obj);
return S_OK;
This->doc_obj->usermode = EDITMODE;
if(This->window->mon) {
CLSID clsid = IID_NULL;
hres = IMoniker_GetClassID(This->window->mon, &clsid);
if(SUCCEEDED(hres)) {
/* We should use IMoniker::Save here */
FIXME("Use CLSID %s\n", debugstr_guid(&clsid));
}
}
if(This->doc_obj->frame)
IOleInPlaceFrame_SetStatusText(This->doc_obj->frame, NULL);
This->window->readystate = READYSTATE_UNINITIALIZED;
if(This->doc_obj->client) {
IOleCommandTarget *cmdtrg;
hres = IOleClientSite_QueryInterface(This->doc_obj->client, &IID_IOleCommandTarget,
(void**)&cmdtrg);
if(SUCCEEDED(hres)) {
VARIANT var;
V_VT(&var) = VT_I4;
V_I4(&var) = 0;
IOleCommandTarget_Exec(cmdtrg, &CGID_ShellDocView, 37, 0, &var, NULL);
IOleCommandTarget_Release(cmdtrg);
}
}
if(This->doc_obj->hostui) {
DOCHOSTUIINFO hostinfo;
memset(&hostinfo, 0, sizeof(DOCHOSTUIINFO));
hostinfo.cbSize = sizeof(DOCHOSTUIINFO);
hres = IDocHostUIHandler_GetHostInfo(This->doc_obj->hostui, &hostinfo);
if(SUCCEEDED(hres))
/* FIXME: use hostinfo */
TRACE("hostinfo = {%u %08x %08x %s %s}\n",
hostinfo.cbSize, hostinfo.dwFlags, hostinfo.dwDoubleClick,
debugstr_w(hostinfo.pchHostCss), debugstr_w(hostinfo.pchHostNS));
}
update_doc(This, UPDATE_UI);
if(This->window->mon) {
/* FIXME: We should find nicer way to do this */
remove_target_tasks(This->task_magic);
mon = This->window->mon;
IMoniker_AddRef(mon);
}else {
static const WCHAR about_blankW[] = {'a','b','o','u','t',':','b','l','a','n','k',0};
hres = CreateURLMoniker(NULL, about_blankW, &mon);
if(FAILED(hres)) {
FIXME("CreateURLMoniker failed: %08x\n", hres);
return hres;
}
}
hres = IPersistMoniker_Load(&This->IPersistMoniker_iface, TRUE, mon, NULL, 0);
IMoniker_Release(mon);
if(FAILED(hres))
return hres;
if(This->doc_obj->ui_active) {
if(This->doc_obj->ip_window)
call_set_active_object(This->doc_obj->ip_window, NULL);
if(This->doc_obj->hostui)
IDocHostUIHandler_HideUI(This->doc_obj->hostui);
}
if(This->doc_obj->ui_active) {
RECT rcBorderWidths;
if(This->doc_obj->hostui)
IDocHostUIHandler_ShowUI(This->doc_obj->hostui, DOCHOSTUITYPE_AUTHOR,
&This->IOleInPlaceActiveObject_iface, &This->IOleCommandTarget_iface,
This->doc_obj->frame, This->doc_obj->ip_window);
if(This->doc_obj->ip_window)
call_set_active_object(This->doc_obj->ip_window, &This->IOleInPlaceActiveObject_iface);
memset(&rcBorderWidths, 0, sizeof(rcBorderWidths));
if(This->doc_obj->frame)
IOleInPlaceFrame_SetBorderSpace(This->doc_obj->frame, &rcBorderWidths);
}
return S_OK;
} }
static HRESULT exec_htmleditmode(HTMLDocument *This, DWORD cmdexecopt, VARIANT *in, VARIANT *out) static HRESULT exec_htmleditmode(HTMLDocument *This, DWORD cmdexecopt, VARIANT *in, VARIANT *out)

View file

@ -218,6 +218,7 @@ static HRESULT WINAPI OleObject_SetClientSite(IOleObject *iface, IOleClientSite
HTMLDocument *This = impl_from_IOleObject(iface); HTMLDocument *This = impl_from_IOleObject(iface);
IOleCommandTarget *cmdtrg = NULL; IOleCommandTarget *cmdtrg = NULL;
IOleWindow *ole_window; IOleWindow *ole_window;
IBrowserService *browser_service;
BOOL hostui_setup; BOOL hostui_setup;
VARIANT silent; VARIANT silent;
HWND hwnd; HWND hwnd;
@ -249,8 +250,22 @@ static HRESULT WINAPI OleObject_SetClientSite(IOleObject *iface, IOleClientSite
This->doc_obj->doc_object_service = NULL; This->doc_obj->doc_object_service = NULL;
} }
if(This->doc_obj->webbrowser) {
IUnknown_Release(This->doc_obj->webbrowser);
This->doc_obj->webbrowser = NULL;
}
if(This->doc_obj->browser_service) {
IUnknown_Release(This->doc_obj->browser_service);
This->doc_obj->browser_service = NULL;
}
if(This->doc_obj->travel_log) {
ITravelLog_Release(This->doc_obj->travel_log);
This->doc_obj->travel_log = NULL;
}
memset(&This->doc_obj->hostinfo, 0, sizeof(DOCHOSTUIINFO)); memset(&This->doc_obj->hostinfo, 0, sizeof(DOCHOSTUIINFO));
This->doc_obj->is_webbrowser = FALSE;
if(!pClientSite) if(!pClientSite)
return S_OK; return S_OK;
@ -322,6 +337,20 @@ static HRESULT WINAPI OleObject_SetClientSite(IOleObject *iface, IOleClientSite
IOleWindow_Release(ole_window); IOleWindow_Release(ole_window);
} }
hres = do_query_service((IUnknown*)pClientSite, &IID_IShellBrowser,
&IID_IBrowserService, (void**)&browser_service);
if(SUCCEEDED(hres)) {
ITravelLog *travel_log;
This->doc_obj->browser_service = (IUnknown*)browser_service;
hres = IBrowserService_GetTravelLog(browser_service, &travel_log);
if(SUCCEEDED(hres))
This->doc_obj->travel_log = travel_log;
}else {
browser_service = NULL;
}
hres = IOleClientSite_QueryInterface(pClientSite, &IID_IOleCommandTarget, (void**)&cmdtrg); hres = IOleClientSite_QueryInterface(pClientSite, &IID_IOleCommandTarget, (void**)&cmdtrg);
if(SUCCEEDED(hres)) { if(SUCCEEDED(hres)) {
VARIANT var; VARIANT var;
@ -331,16 +360,13 @@ static HRESULT WINAPI OleObject_SetClientSite(IOleObject *iface, IOleClientSite
if(!hostui_setup) { if(!hostui_setup) {
IDocObjectService *doc_object_service; IDocObjectService *doc_object_service;
IBrowserService *browser_service;
IWebBrowser2 *wb; IWebBrowser2 *wb;
V_VT(&var) = VT_UNKNOWN; V_VT(&var) = VT_UNKNOWN;
V_UNKNOWN(&var) = (IUnknown*)&This->window->base.IHTMLWindow2_iface; V_UNKNOWN(&var) = (IUnknown*)&This->window->base.IHTMLWindow2_iface;
IOleCommandTarget_Exec(cmdtrg, &CGID_DocHostCmdPriv, DOCHOST_DOCCANNAVIGATE, 0, &var, NULL); IOleCommandTarget_Exec(cmdtrg, &CGID_DocHostCmdPriv, DOCHOST_DOCCANNAVIGATE, 0, &var, NULL);
hres = do_query_service((IUnknown*)pClientSite, &IID_IShellBrowser, if(browser_service) {
&IID_IBrowserService, (void**)&browser_service);
if(SUCCEEDED(hres)) {
hres = IBrowserService_QueryInterface(browser_service, hres = IBrowserService_QueryInterface(browser_service,
&IID_IDocObjectService, (void**)&doc_object_service); &IID_IDocObjectService, (void**)&doc_object_service);
if(SUCCEEDED(hres)) { if(SUCCEEDED(hres)) {
@ -351,12 +377,8 @@ static HRESULT WINAPI OleObject_SetClientSite(IOleObject *iface, IOleClientSite
* embedder supports IWebBrowserApp. * embedder supports IWebBrowserApp.
*/ */
hres = do_query_service((IUnknown*)pClientSite, &IID_IWebBrowserApp, &IID_IWebBrowser2, (void**)&wb); hres = do_query_service((IUnknown*)pClientSite, &IID_IWebBrowserApp, &IID_IWebBrowser2, (void**)&wb);
if(SUCCEEDED(hres)) { if(SUCCEEDED(hres))
This->doc_obj->is_webbrowser = TRUE; This->doc_obj->webbrowser = (IUnknown*)wb;
IWebBrowser2_Release(wb);
}
IBrowserService_Release(browser_service);
} }
} }
} }

View file

@ -57,13 +57,6 @@ typedef struct {
HTMLMimeTypesCollection *mime_types; HTMLMimeTypesCollection *mime_types;
} OmNavigator; } OmNavigator;
typedef struct {
DispatchEx dispex;
IOmHistory IOmHistory_iface;
LONG ref;
} OmHistory;
static inline OmHistory *impl_from_IOmHistory(IOmHistory *iface) static inline OmHistory *impl_from_IOmHistory(IOmHistory *iface)
{ {
return CONTAINING_RECORD(iface, OmHistory, IOmHistory_iface); return CONTAINING_RECORD(iface, OmHistory, IOmHistory_iface);
@ -155,8 +148,17 @@ static HRESULT WINAPI OmHistory_Invoke(IOmHistory *iface, DISPID dispIdMember, R
static HRESULT WINAPI OmHistory_get_length(IOmHistory *iface, short *p) static HRESULT WINAPI OmHistory_get_length(IOmHistory *iface, short *p)
{ {
OmHistory *This = impl_from_IOmHistory(iface); OmHistory *This = impl_from_IOmHistory(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL; TRACE("(%p)->(%p)\n", This, p);
if(!This->window || !This->window->base.outer_window->doc_obj
|| !This->window->base.outer_window->doc_obj->travel_log) {
*p = 0;
}else {
*p = ITravelLog_CountEntries(This->window->base.outer_window->doc_obj->travel_log,
This->window->base.outer_window->doc_obj->browser_service);
}
return S_OK;
} }
static HRESULT WINAPI OmHistory_back(IOmHistory *iface, VARIANT *pvargdistance) static HRESULT WINAPI OmHistory_back(IOmHistory *iface, VARIANT *pvargdistance)
@ -206,7 +208,7 @@ static dispex_static_data_t OmHistory_dispex = {
}; };
HRESULT create_history(IOmHistory **ret) HRESULT create_history(HTMLInnerWindow *window, OmHistory **ret)
{ {
OmHistory *history; OmHistory *history;
@ -218,7 +220,9 @@ HRESULT create_history(IOmHistory **ret)
history->IOmHistory_iface.lpVtbl = &OmHistoryVtbl; history->IOmHistory_iface.lpVtbl = &OmHistoryVtbl;
history->ref = 1; history->ref = 1;
*ret = &history->IOmHistory_iface; history->window = window;
*ret = history;
return S_OK; return S_OK;
} }

View file

@ -80,7 +80,7 @@ static void notify_travellog_update(HTMLDocumentObj *doc)
IOleCommandTarget *cmdtrg; IOleCommandTarget *cmdtrg;
HRESULT hres; HRESULT hres;
if(!doc->is_webbrowser) if(!doc->webbrowser)
return; return;
hres = IOleClientSite_QueryInterface(doc->client, &IID_IOleCommandTarget, (void**)&cmdtrg); hres = IOleClientSite_QueryInterface(doc->client, &IID_IOleCommandTarget, (void**)&cmdtrg);
@ -161,7 +161,7 @@ void set_current_mon(HTMLOuterWindow *This, IMoniker *mon, DWORD flags)
hres = IMoniker_GetDisplayName(mon, NULL, NULL, &url); hres = IMoniker_GetDisplayName(mon, NULL, NULL, &url);
if(SUCCEEDED(hres)) { if(SUCCEEDED(hres)) {
hres = CreateUri(url, 0, 0, &uri); hres = create_uri(url, 0, &uri);
if(FAILED(hres)) { if(FAILED(hres)) {
WARN("CrateUri failed: %08x\n", hres); WARN("CrateUri failed: %08x\n", hres);
set_current_uri(This, NULL); set_current_uri(This, NULL);
@ -181,11 +181,16 @@ void set_current_mon(HTMLOuterWindow *This, IMoniker *mon, DWORD flags)
set_script_mode(This, use_gecko_script(This) ? SCRIPTMODE_GECKO : SCRIPTMODE_ACTIVESCRIPT); set_script_mode(This, use_gecko_script(This) ? SCRIPTMODE_GECKO : SCRIPTMODE_ACTIVESCRIPT);
} }
HRESULT create_uri(const WCHAR *uri_str, DWORD flags, IUri **uri)
{
return CreateUri(uri_str, flags | Uri_CREATE_ALLOW_IMPLICIT_FILE_SCHEME, 0, uri);
}
HRESULT create_relative_uri(HTMLOuterWindow *window, const WCHAR *rel_uri, IUri **uri) HRESULT create_relative_uri(HTMLOuterWindow *window, const WCHAR *rel_uri, IUri **uri)
{ {
return window->uri return window->uri
? CoInternetCombineUrlEx(window->uri, rel_uri, URL_ESCAPE_SPACES_ONLY|URL_DONT_ESCAPE_EXTRA_INFO, uri, 0) ? CoInternetCombineUrlEx(window->uri, rel_uri, URL_ESCAPE_SPACES_ONLY|URL_DONT_ESCAPE_EXTRA_INFO, uri, 0)
: CreateUri(rel_uri, 0, 0, uri); : create_uri(rel_uri, 0, uri);
} }
void set_download_state(HTMLDocumentObj *doc, int state) void set_download_state(HTMLDocumentObj *doc, int state)
@ -347,25 +352,43 @@ void prepare_for_binding(HTMLDocument *This, IMoniker *mon, DWORD flags)
} }
} }
HRESULT set_moniker(HTMLDocument *This, IMoniker *mon, IBindCtx *pibc, nsChannelBSC *async_bsc, BOOL set_download) HRESULT set_moniker(HTMLOuterWindow *window, IMoniker *mon, IUri *nav_uri, IBindCtx *pibc, nsChannelBSC *async_bsc,
BOOL set_download)
{ {
download_proc_task_t *download_task; download_proc_task_t *download_task;
HTMLDocumentObj *doc_obj = NULL;
nsChannelBSC *bscallback; nsChannelBSC *bscallback;
nsWineURI *nsuri; nsWineURI *nsuri;
LPOLESTR url; LPOLESTR url;
IUri *uri;
HRESULT hres; HRESULT hres;
if(window->doc_obj && window->doc_obj->basedoc.window == window)
doc_obj = window->doc_obj;
hres = IMoniker_GetDisplayName(mon, pibc, NULL, &url); hres = IMoniker_GetDisplayName(mon, pibc, NULL, &url);
if(FAILED(hres)) { if(FAILED(hres)) {
WARN("GetDiaplayName failed: %08x\n", hres); WARN("GetDiaplayName failed: %08x\n", hres);
return hres; return hres;
} }
if(nav_uri) {
uri = nav_uri;
}else {
hres = create_uri(url, 0, &uri);
if(FAILED(hres)) {
CoTaskMemFree(url);
return hres;
}
}
TRACE("got url: %s\n", debugstr_w(url)); TRACE("got url: %s\n", debugstr_w(url));
set_ready_state(This->window, READYSTATE_LOADING); set_ready_state(window, READYSTATE_LOADING);
hres = create_doc_uri(This->window, url, &nsuri); hres = create_doc_uri(window, uri, &nsuri);
if(!nav_uri)
IUri_Release(uri);
if(SUCCEEDED(hres)) { if(SUCCEEDED(hres)) {
if(async_bsc) if(async_bsc)
bscallback = async_bsc; bscallback = async_bsc;
@ -374,13 +397,16 @@ HRESULT set_moniker(HTMLDocument *This, IMoniker *mon, IBindCtx *pibc, nsChannel
} }
if(SUCCEEDED(hres)) { if(SUCCEEDED(hres)) {
remove_target_tasks(This->task_magic); if(window->base.inner_window->doc)
abort_window_bindings(This->window->base.inner_window); remove_target_tasks(window->base.inner_window->task_magic);
abort_window_bindings(window->base.inner_window);
hres = load_nsuri(This->window, nsuri, bscallback, 0/*LOAD_INITIAL_DOCUMENT_URI*/); hres = load_nsuri(window, nsuri, bscallback, LOAD_FLAGS_BYPASS_CACHE);
nsISupports_Release((nsISupports*)nsuri); /* FIXME */ nsISupports_Release((nsISupports*)nsuri); /* FIXME */
if(SUCCEEDED(hres)) if(SUCCEEDED(hres)) {
hres = create_pending_window(This->window, bscallback); hres = create_pending_window(window, bscallback);
TRACE("pending window for %p %p %p\n", window, bscallback, window->pending_window);
}
if(bscallback != async_bsc) if(bscallback != async_bsc)
IBindStatusCallback_Release(&bscallback->bsc.IBindStatusCallback_iface); IBindStatusCallback_Release(&bscallback->bsc.IBindStatusCallback_iface);
} }
@ -390,25 +416,29 @@ HRESULT set_moniker(HTMLDocument *This, IMoniker *mon, IBindCtx *pibc, nsChannel
return hres; return hres;
} }
HTMLDocument_LockContainer(This->doc_obj, TRUE); if(doc_obj) {
HTMLDocument_LockContainer(doc_obj, TRUE);
if(This->doc_obj->frame) { if(doc_obj->frame) {
docobj_task_t *task; docobj_task_t *task;
task = heap_alloc(sizeof(docobj_task_t)); task = heap_alloc(sizeof(docobj_task_t));
task->doc = This->doc_obj; task->doc = doc_obj;
hres = push_task(&task->header, set_progress_proc, NULL, This->doc_obj->basedoc.task_magic); hres = push_task(&task->header, set_progress_proc, NULL, doc_obj->basedoc.task_magic);
if(FAILED(hres)) { if(FAILED(hres)) {
CoTaskMemFree(url); CoTaskMemFree(url);
return hres; return hres;
}
} }
download_task = heap_alloc(sizeof(download_proc_task_t));
download_task->doc = doc_obj;
download_task->set_download = set_download;
download_task->url = url;
return push_task(&download_task->header, set_downloading_proc, set_downloading_task_destr, doc_obj->basedoc.task_magic);
} }
download_task = heap_alloc(sizeof(download_proc_task_t)); return S_OK;
download_task->doc = This->doc_obj;
download_task->set_download = set_download;
download_task->url = url;
return push_task(&download_task->header, set_downloading_proc, set_downloading_task_destr, This->doc_obj->basedoc.task_magic);
} }
void set_ready_state(HTMLOuterWindow *window, READYSTATE readystate) void set_ready_state(HTMLOuterWindow *window, READYSTATE readystate)
@ -547,7 +577,7 @@ static HRESULT WINAPI PersistMoniker_Load(IPersistMoniker *iface, BOOL fFullyAva
prepare_for_binding(This, pimkName, FALSE); prepare_for_binding(This, pimkName, FALSE);
call_docview_84(This->doc_obj); call_docview_84(This->doc_obj);
hres = set_moniker(This, pimkName, pibc, NULL, TRUE); hres = set_moniker(This->window, pimkName, NULL, pibc, NULL, TRUE);
if(FAILED(hres)) if(FAILED(hres))
return hres; return hres;
@ -816,7 +846,7 @@ static HRESULT WINAPI PersistStreamInit_Load(IPersistStreamInit *iface, LPSTREAM
} }
prepare_for_binding(This, mon, FALSE); prepare_for_binding(This, mon, FALSE);
hres = set_moniker(This, mon, NULL, NULL, TRUE); hres = set_moniker(This->window, mon, NULL, NULL, NULL, TRUE);
IMoniker_Release(mon); IMoniker_Release(mon);
if(FAILED(hres)) if(FAILED(hres))
return hres; return hres;
@ -873,7 +903,7 @@ static HRESULT WINAPI PersistStreamInit_InitNew(IPersistStreamInit *iface)
} }
prepare_for_binding(This, mon, FALSE); prepare_for_binding(This, mon, FALSE);
hres = set_moniker(This, mon, NULL, NULL, FALSE); hres = set_moniker(This->window, mon, NULL, NULL, NULL, FALSE);
IMoniker_Release(mon); IMoniker_Release(mon);
if(FAILED(hres)) if(FAILED(hres))
return hres; return hres;
@ -970,7 +1000,7 @@ static HRESULT WINAPI PersistHistory_LoadHistory(IPersistHistory *iface, IStream
hres = E_FAIL; hres = E_FAIL;
if(SUCCEEDED(hres)) { if(SUCCEEDED(hres)) {
uri_str[str_len] = 0; uri_str[str_len] = 0;
hres = CreateUri(uri_str, 0, 0, &uri); hres = create_uri(uri_str, 0, &uri);
} }
heap_free(uri_str); heap_free(uri_str);
if(FAILED(hres)) if(FAILED(hres))

View file

@ -275,7 +275,7 @@ static HRESULT fill_props(nsIDOMHTMLElement *nselem, PropertyBag *prop_bag)
{ {
nsIDOMHTMLParamElement *nsparam; nsIDOMHTMLParamElement *nsparam;
nsAString name_str, value_str; nsAString name_str, value_str;
nsIDOMNodeList *params; nsIDOMHTMLCollection *params;
UINT32 length, i; UINT32 length, i;
nsIDOMNode *nsnode; nsIDOMNode *nsnode;
nsresult nsres; nsresult nsres;
@ -289,12 +289,12 @@ static HRESULT fill_props(nsIDOMHTMLElement *nselem, PropertyBag *prop_bag)
if(NS_FAILED(nsres)) if(NS_FAILED(nsres))
return E_FAIL; return E_FAIL;
nsres = nsIDOMNodeList_GetLength(params, &length); nsres = nsIDOMHTMLCollection_GetLength(params, &length);
if(NS_FAILED(nsres)) if(NS_FAILED(nsres))
length = 0; length = 0;
for(i=0; i < length; i++) { for(i=0; i < length; i++) {
nsres = nsIDOMNodeList_Item(params, i, &nsnode); nsres = nsIDOMHTMLCollection_Item(params, i, &nsnode);
if(NS_FAILED(nsres)) { if(NS_FAILED(nsres)) {
hres = E_FAIL; hres = E_FAIL;
break; break;
@ -333,7 +333,7 @@ static HRESULT fill_props(nsIDOMHTMLElement *nselem, PropertyBag *prop_bag)
} }
} }
nsIDOMNodeList_Release(params); nsIDOMHTMLCollection_Release(params);
return hres; return hres;
} }

View file

@ -634,31 +634,27 @@ static HRESULT WINAPI ResProtocol_Start(IInternetProtocol *iface, LPCWSTR szUrl,
} }
url_dll = url + sizeof(wszRes)/sizeof(wszRes[0]); url_dll = url + sizeof(wszRes)/sizeof(wszRes[0]);
if(!(url_file = strrchrW(url_dll, '/'))) { if(!(res_type = strchrW(url_dll, '/'))) {
WARN("wrong url: %s\n", debugstr_w(url)); WARN("wrong url: %s\n", debugstr_w(url));
IInternetProtocolSink_ReportResult(pOIProtSink, MK_E_SYNTAX, 0, NULL); IInternetProtocolSink_ReportResult(pOIProtSink, MK_E_SYNTAX, 0, NULL);
heap_free(url); heap_free(url);
return MK_E_SYNTAX; return MK_E_SYNTAX;
} }
*url_file++ = 0; *res_type++ = 0;
if ((url_file = strchrW(res_type, '/'))) {
*url_file++ = 0;
}else {
url_file = res_type;
res_type = MAKEINTRESOURCEW(RT_HTML);
}
hdll = LoadLibraryExW(url_dll, NULL, LOAD_LIBRARY_AS_DATAFILE); hdll = LoadLibraryExW(url_dll, NULL, LOAD_LIBRARY_AS_DATAFILE);
if(!hdll) { if(!hdll) {
if (!(res_type = strrchrW(url_dll, '/'))) { WARN("Could not open dll: %s\n", debugstr_w(url_dll));
WARN("Could not open dll: %s\n", debugstr_w(url_dll)); IInternetProtocolSink_ReportResult(pOIProtSink, HRESULT_FROM_WIN32(GetLastError()), 0, NULL);
IInternetProtocolSink_ReportResult(pOIProtSink, HRESULT_FROM_WIN32(GetLastError()), 0, NULL); heap_free(url);
heap_free(url); return HRESULT_FROM_WIN32(GetLastError());
return HRESULT_FROM_WIN32(GetLastError());
}
*res_type++ = 0;
hdll = LoadLibraryExW(url_dll, NULL, LOAD_LIBRARY_AS_DATAFILE);
if(!hdll) {
WARN("Could not open dll: %s\n", debugstr_w(url_dll));
IInternetProtocolSink_ReportResult(pOIProtSink, HRESULT_FROM_WIN32(GetLastError()), 0, NULL);
heap_free(url);
return HRESULT_FROM_WIN32(GetLastError());
}
} }
TRACE("trying to find resource type %s, name %s\n", debugstr_w(res_type), debugstr_w(url_file)); TRACE("trying to find resource type %s, name %s\n", debugstr_w(res_type), debugstr_w(url_file));
@ -668,7 +664,7 @@ static HRESULT WINAPI ResProtocol_Start(IInternetProtocol *iface, LPCWSTR szUrl,
LPWSTR endpoint = NULL; LPWSTR endpoint = NULL;
DWORD file_id = strtolW(url_file, &endpoint, 10); DWORD file_id = strtolW(url_file, &endpoint, 10);
if(endpoint == url_file+strlenW(url_file)) if(endpoint == url_file+strlenW(url_file))
src = FindResourceW(hdll, MAKEINTRESOURCEW(file_id), MAKEINTRESOURCEW(RT_HTML)); src = FindResourceW(hdll, MAKEINTRESOURCEW(file_id), res_type);
if(!src) { if(!src) {
WARN("Could not find resource\n"); WARN("Could not find resource\n");

View file

@ -131,8 +131,10 @@ void remove_target_tasks(LONG target)
} }
if(!list_empty(&thread_data->timer_list)) { if(!list_empty(&thread_data->timer_list)) {
DWORD tc = GetTickCount();
timer = LIST_ENTRY(list_head(&thread_data->timer_list), task_timer_t, entry); timer = LIST_ENTRY(list_head(&thread_data->timer_list), task_timer_t, entry);
SetTimer(thread_data->thread_hwnd, TIMER_ID, timer->time - GetTickCount(), NULL); SetTimer(thread_data->thread_hwnd, TIMER_ID, max( (int)(timer->time - tc), 0 ), NULL);
} }
while(thread_data->task_queue_head && thread_data->task_queue_head->target_magic == target) { while(thread_data->task_queue_head && thread_data->task_queue_head->target_magic == target) {
@ -258,17 +260,29 @@ static LRESULT process_timer(void)
thread_data_t *thread_data; thread_data_t *thread_data;
IDispatch *disp; IDispatch *disp;
DWORD tc; DWORD tc;
task_timer_t *timer; task_timer_t *timer=NULL, *last_timer;
TRACE("\n"); TRACE("\n");
thread_data = get_thread_data(FALSE); thread_data = get_thread_data(FALSE);
assert(thread_data != NULL); assert(thread_data != NULL);
while(!list_empty(&thread_data->timer_list)) { if(list_empty(&thread_data->timer_list)) {
KillTimer(thread_data->thread_hwnd, TIMER_ID);
return 0;
}
last_timer = LIST_ENTRY(list_tail(&thread_data->timer_list), task_timer_t, entry);
do {
tc = GetTickCount();
if(timer == last_timer) {
timer = LIST_ENTRY(list_head(&thread_data->timer_list), task_timer_t, entry);
SetTimer(thread_data->thread_hwnd, TIMER_ID, timer->time>tc ? timer->time-tc : 0, NULL);
return 0;
}
timer = LIST_ENTRY(list_head(&thread_data->timer_list), task_timer_t, entry); timer = LIST_ENTRY(list_head(&thread_data->timer_list), task_timer_t, entry);
tc = GetTickCount();
if(timer->time > tc) { if(timer->time > tc) {
SetTimer(thread_data->thread_hwnd, TIMER_ID, timer->time-tc, NULL); SetTimer(thread_data->thread_hwnd, TIMER_ID, timer->time-tc, NULL);
return 0; return 0;
@ -287,7 +301,7 @@ static LRESULT process_timer(void)
call_timer_disp(disp); call_timer_disp(disp);
IDispatch_Release(disp); IDispatch_Release(disp);
} }while(!list_empty(&thread_data->timer_list));
KillTimer(thread_data->thread_hwnd, TIMER_ID); KillTimer(thread_data->thread_hwnd, TIMER_ID);
return 0; return 0;

View file

@ -116,7 +116,7 @@ reactos/dll/win32/msctf # Synced to Wine-1.7.1
reactos/dll/win32/msftedit # Synced to Wine-1.5.19 reactos/dll/win32/msftedit # Synced to Wine-1.5.19
reactos/dll/win32/msg711.acm # Synced to Wine-1.7.1 reactos/dll/win32/msg711.acm # Synced to Wine-1.7.1
reactos/dll/win32/msgsm32.acm # Synced to Wine-1.7.1 reactos/dll/win32/msgsm32.acm # Synced to Wine-1.7.1
reactos/dll/win32/mshtml # Synced to Wine-1.5.26 reactos/dll/win32/mshtml # Synced to Wine-1.7.1
reactos/dll/win32/mshtml.tlb # Synced to Wine-1.5.26 reactos/dll/win32/mshtml.tlb # Synced to Wine-1.5.26
reactos/dll/win32/msi # Synced to Wine-1.7.1 reactos/dll/win32/msi # Synced to Wine-1.7.1
reactos/dll/win32/msimg32 # Synced to Wine-1.5.19 reactos/dll/win32/msimg32 # Synced to Wine-1.5.19