static IHTMLDocument2 *create_doc_with_string(const char *str) { IPersistStreamInit *init; IStream *stream; IHTMLDocument2 *doc; HGLOBAL mem; SIZE_T len; notif_doc = doc = create_document(); if(!doc) return NULL; doc_complete = FALSE; len = strlen(str); mem = GlobalAlloc(0, len); memcpy(mem, str, len); CreateStreamOnHGlobal(mem, TRUE, &stream); IHTMLDocument2_QueryInterface(doc, &IID_IPersistStreamInit, (void**)&init); IPersistStreamInit_Load(init, stream); IPersistStreamInit_Release(init); IStream_Release(stream); return doc; }
static IHTMLDocument2 *create_doc_from_url(const char *start_url) { BSTR url; IBindCtx *bc; IMoniker *url_mon; IPersistMoniker *persist_mon; IHTMLDocument2 *doc; HRESULT hres; hres = CreateBindCtx(0, &bc); ok(hres == S_OK, "CreateBindCtx failed: 0x%08x\n", hres); url = a2bstr(start_url); hres = CreateURLMoniker(NULL, url, &url_mon); ok(hres == S_OK, "CreateURLMoniker failed: 0x%08x\n", hres); hres = CoCreateInstance(&CLSID_HTMLDocument, NULL, CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER, &IID_IHTMLDocument2, (void**)&doc); ok(hres == S_OK, "CoCreateInstance failed: 0x%08x\n", hres); hres = IHTMLDocument2_QueryInterface(doc, &IID_IPersistMoniker, (void**)&persist_mon); ok(hres == S_OK, "IHTMLDocument2_QueryInterface failed: 0x%08x\n", hres); hres = IPersistMoniker_Load(persist_mon, FALSE, url_mon, bc, STGM_SHARE_EXCLUSIVE | STGM_READWRITE); ok(hres == S_OK, "IPersistMoniker_Load failed: 0x%08x\n", hres); IPersistMoniker_Release(persist_mon); IMoniker_Release(url_mon); IBindCtx_Release(bc); SysFreeString(url); doc_complete = FALSE; notif_doc = doc; do_advise((IUnknown*)doc, &IID_IPropertyNotifySink, (IUnknown*)&PropertyNotifySink); pump_msgs(&doc_complete); return doc; }
static HRESULT WINAPI ServiceProvider_QueryService(IServiceProvider *iface, REFGUID guidService, REFIID riid, void **ppv) { HTMLDocument *This = impl_from_IServiceProvider(iface); if(IsEqualGUID(&CLSID_CMarkup, guidService)) { FIXME("(%p)->(CLSID_CMarkup %s %p)\n", This, debugstr_guid(riid), ppv); return E_NOINTERFACE; } if(IsEqualGUID(&SID_SOleUndoManager, guidService)) { TRACE("SID_SOleUndoManager\n"); if(!This->doc_obj->undomgr) This->doc_obj->undomgr = create_undomgr(); return IOleUndoManager_QueryInterface(This->doc_obj->undomgr, riid, ppv); } if(IsEqualGUID(&SID_SContainerDispatch, guidService)) { TRACE("SID_SContainerDispatch\n"); return IHTMLDocument2_QueryInterface(&This->IHTMLDocument2_iface, riid, ppv); } TRACE("(%p)->(%s %s %p)\n", This, debugstr_guid(guidService), debugstr_guid(riid), ppv); if(This->doc_obj->client) { HRESULT hres; hres = do_query_service((IUnknown*)This->doc_obj->client, guidService, riid, ppv); if(SUCCEEDED(hres)) return hres; } FIXME("unknown service %s\n", debugstr_guid(guidService)); return E_NOINTERFACE; }
static HRESULT WINAPI OleInPlaceActiveObject_QueryInterface(IOleInPlaceActiveObject *iface, REFIID riid, void **ppvObject) { HTMLDocument *This = ACTOBJ_THIS(iface); return IHTMLDocument2_QueryInterface(HTMLDOC(This), riid, ppvObject); }
static HRESULT WINAPI OleInPlaceObjectWindowless_QueryInterface(IOleInPlaceObjectWindowless *iface, REFIID riid, void **ppvObject) { HTMLDocument *This = OLEINPLACEWND_THIS(iface); return IHTMLDocument2_QueryInterface(HTMLDOC(This), riid, ppvObject); }
static HRESULT WINAPI ViewObject_QueryInterface(IViewObjectEx *iface, REFIID riid, void **ppvObject) { HTMLDocument *This = VIEWOBJ_THIS(iface); return IHTMLDocument2_QueryInterface(HTMLDOC(This), riid, ppvObject); }
static HRESULT WINAPI OleDocumentView_QueryInterface(IOleDocumentView *iface, REFIID riid, void **ppvObject) { HTMLDocument *This = DOCVIEW_THIS(iface); return IHTMLDocument2_QueryInterface(HTMLDOC(This), riid, ppvObject); }
static HRESULT WINAPI HTMLDocument4_QueryInterface(IHTMLDocument4 *iface, REFIID riid, void **ppv) { HTMLDocument *This = HTMLDOC4_THIS(iface); return IHTMLDocument2_QueryInterface(HTMLDOC(This), riid, ppv); }
static HRESULT WINAPI ObjectWithSite_QueryInterface(IObjectWithSite *iface, REFIID riid, void **ppvObject) { HTMLDocument *This = OBJSITE_THIS(iface); return IHTMLDocument2_QueryInterface(HTMLDOC(This), riid, ppvObject); }
static HRESULT WINAPI OleControl_QueryInterface(IOleControl *iface, REFIID riid, void **ppv) { HTMLDocument *This = CONTROL_THIS(iface); return IHTMLDocument2_QueryInterface(HTMLDOC(This), riid, ppv); }