mshtml: Added PutProperty implementation.

This commit is contained in:
Jacek Caban 2007-12-31 01:32:48 +01:00 committed by Alexandre Julliard
parent 1f26b146d1
commit 7514283d73
4 changed files with 50 additions and 4 deletions

View File

@ -185,6 +185,7 @@ static ULONG WINAPI HTMLDocument_Release(IHTMLDocument2 *iface)
if(This->window) if(This->window)
IHTMLWindow2_Release(HTMLWINDOW2(This->window)); IHTMLWindow2_Release(HTMLWINDOW2(This->window));
heap_free(This->mime);
detach_selection(This); detach_selection(This);
detach_ranges(This); detach_ranges(This);
release_nodes(This); release_nodes(This);

View File

@ -23,6 +23,7 @@
#include "hlink.h" #include "hlink.h"
#include "wine/list.h" #include "wine/list.h"
#include "wine/unicode.h"
#ifdef INIT_GUID #ifdef INIT_GUID
#include "initguid.h" #include "initguid.h"
@ -155,6 +156,7 @@ struct HTMLDocument {
BOOL has_key_path; BOOL has_key_path;
BOOL container_locked; BOOL container_locked;
BOOL focus; BOOL focus;
LPWSTR mime;
DWORD update; DWORD update;
@ -561,6 +563,22 @@ static inline BOOL heap_free(void *mem)
return HeapFree(GetProcessHeap(), 0, mem); return HeapFree(GetProcessHeap(), 0, mem);
} }
static inline LPWSTR heap_strdupW(LPCWSTR str)
{
LPWSTR ret = NULL;
if(str) {
DWORD size;
size = (strlenW(str)+1)*sizeof(WCHAR);
ret = heap_alloc(size);
memcpy(ret, str, size);
}
return ret;
}
HINSTANCE get_shdoclc(void); HINSTANCE get_shdoclc(void);
extern HINSTANCE hInst; extern HINSTANCE hInst;

View File

@ -212,8 +212,8 @@ static HRESULT read_stream_data(BSCallback *This, IStream *stream)
break; break;
if(!This->readed && This->nsstream->buf_size >= 2 && *(WORD*)This->nsstream->buf == 0xfeff) { if(!This->readed && This->nsstream->buf_size >= 2 && *(WORD*)This->nsstream->buf == 0xfeff) {
This->nschannel->charset = heap_alloc(sizeof(UTF16_STR)); This->nschannel->charset = heap_alloc(sizeof(UTF16_STR));
memcpy(This->nschannel->charset, UTF16_STR, sizeof(UTF16_STR)); memcpy(This->nschannel->charset, UTF16_STR, sizeof(UTF16_STR));
} }
if(!This->readed) { if(!This->readed) {
@ -887,6 +887,16 @@ void set_document_bscallback(HTMLDocument *doc, BSCallback *callback)
if(callback) { if(callback) {
IBindStatusCallback_AddRef(STATUSCLB(callback)); IBindStatusCallback_AddRef(STATUSCLB(callback));
callback->doc = doc; callback->doc = doc;
if(doc->mime) {
DWORD len;
heap_free(callback->nschannel->content);
len = WideCharToMultiByte(CP_ACP, 0, doc->mime, -1, NULL, 0, NULL, NULL);
callback->nschannel->content = heap_alloc(len);
WideCharToMultiByte(CP_ACP, 0, doc->mime, -1, callback->nschannel->content, -1, NULL, NULL);
}
} }
} }

View File

@ -502,8 +502,24 @@ static ULONG WINAPI MonikerProp_Release(IMonikerProp *iface)
static HRESULT WINAPI MonikerProp_PutProperty(IMonikerProp *iface, MONIKERPROPERTY mkp, LPCWSTR val) static HRESULT WINAPI MonikerProp_PutProperty(IMonikerProp *iface, MONIKERPROPERTY mkp, LPCWSTR val)
{ {
HTMLDocument *This = MONPROP_THIS(iface); HTMLDocument *This = MONPROP_THIS(iface);
FIXME("(%p)->(%d %s)\n", This, mkp, debugstr_w(val));
return E_NOTIMPL; TRACE("(%p)->(%d %s)\n", This, mkp, debugstr_w(val));
switch(mkp) {
case MIMETYPEPROP:
heap_free(This->mime);
This->mime = heap_strdupW(val);
break;
case CLASSIDPROP:
break;
default:
FIXME("mkp %d\n", mkp);
return E_NOTIMPL;
}
return S_OK;
} }
static const IMonikerPropVtbl MonikerPropVtbl = { static const IMonikerPropVtbl MonikerPropVtbl = {
@ -743,4 +759,5 @@ void HTMLDocument_Persist_Init(HTMLDocument *This)
This->bscallback = NULL; This->bscallback = NULL;
This->mon = NULL; This->mon = NULL;
This->url = NULL; This->url = NULL;
This->mime = NULL;
} }