static void create_xmlhttprequest(IHTMLDocument2 *doc) { IHTMLWindow2 *window; IHTMLWindow5 *window5; VARIANT var; IHTMLXMLHttpRequestFactory *factory; HRESULT hres; hres = IHTMLDocument2_get_parentWindow(doc, &window); ok(hres == S_OK, "get_parentWindow failed: %08x\n", hres); ok(window != NULL, "window == NULL\n"); hres = IHTMLWindow2_QueryInterface(window, &IID_IHTMLWindow5, (void**)&window5); IHTMLWindow2_Release(window); if(FAILED(hres)) { win_skip("IHTMLWindow5 not supported\n"); return; } VariantInit(&var); hres = IHTMLWindow5_get_XMLHttpRequest(window5, &var); IHTMLWindow5_Release(window5); ok(hres == S_OK, "get_XMLHttpRequest failed: %08x\n", hres); ok(V_VT(&var) == VT_DISPATCH, "V_VT(&var) is %08x, expected VT_DISPATCH\n", V_VT(&var)); hres = IDispatch_QueryInterface(V_DISPATCH(&var), &IID_IHTMLXMLHttpRequestFactory, (void**)&factory); VariantClear(&var); ok(hres == S_OK, "QueryInterface(IID_IHTMLXMLHttpRequestFactory) failed: %08x\n", hres); ok(factory != NULL, "factory == NULL\n"); hres = IHTMLXMLHttpRequestFactory_create(factory, &xhr); IHTMLXMLHttpRequestFactory_Release(factory); ok(hres == S_OK, "create failed: %08x\n", hres); ok(xhr != NULL, "xhr == NULL\n"); }
static HRESULT WINAPI DocObjectService_FireNavigateComplete2( IDocObjectService* iface, IHTMLWindow2 *pHTMLWindow2, DWORD dwFlags) { ShellBrowser *This = impl_from_IDocObjectService(iface); DocHost *doc_host = This->doc_host; IHTMLPrivateWindow *priv_window; VARIANTARG params[2]; DISPPARAMS dp = {params, NULL, 2, 0}; VARIANT url_var; BSTR url; HRESULT hres; TRACE("%p %p %x\n", This, pHTMLWindow2, dwFlags); update_navigation_commands(This->doc_host); if(doc_host->travellog.loading_pos != -1) { WARN("histupdate not notified\n"); doc_host->travellog.position = doc_host->travellog.loading_pos; doc_host->travellog.loading_pos = -1; } hres = IHTMLWindow2_QueryInterface(pHTMLWindow2, &IID_IHTMLPrivateWindow, (void**)&priv_window); if(FAILED(hres)) return hres; hres = IHTMLPrivateWindow_GetAddressBarUrl(priv_window, &url); IHTMLPrivateWindow_Release(priv_window); if(FAILED(hres)) return hres; TRACE("got URL %s\n", debugstr_w(url)); set_dochost_url(This->doc_host, url); V_VT(params) = (VT_BYREF|VT_VARIANT); V_VARIANTREF(params) = &url_var; V_VT(params+1) = VT_DISPATCH; V_DISPATCH(params+1) = (IDispatch*)doc_host->wb; V_VT(&url_var) = VT_BSTR; V_BSTR(&url_var) = url; /* Keep reference to This. It may be released in event handler. */ IShellBrowser_AddRef(&This->IShellBrowser_iface); TRACE(">>>\n"); call_sink(This->doc_host->cps.wbe2, DISPID_NAVIGATECOMPLETE2, &dp); TRACE("<<<\n"); SysFreeString(url); This->doc_host->busy = VARIANT_FALSE; IShellBrowser_Release(&This->IShellBrowser_iface); return S_OK; }
static HRESULT WINAPI IEServiceProvider_QueryService(IServiceProvider *iface, REFGUID guidService, REFIID riid, void **ppv) { InternetExplorer *This = impl_from_IServiceProvider(iface); if(IsEqualGUID(&SID_SHTMLWindow, riid)) { TRACE("(%p)->(SID_SHTMLWindow)\n", This); return IHTMLWindow2_QueryInterface(&This->doc_host->doc_host.html_window.IHTMLWindow2_iface, riid, ppv); } FIXME("(%p)->(%s, %s %p)\n", This, debugstr_guid(guidService), debugstr_guid(riid), ppv); *ppv = NULL; return E_NOINTERFACE; }
static HRESULT WINAPI DocObjectService_FireDocumentComplete( IDocObjectService* iface, IHTMLWindow2 *pHTMLWindow, DWORD dwFlags) { ShellBrowser *This = impl_from_IDocObjectService(iface); IHTMLPrivateWindow *priv_window; VARIANTARG params[2]; DISPPARAMS dp = {params, NULL, 2, 0}; VARIANT url_var; BSTR url; HRESULT hres; TRACE("%p %p %x\n", This, pHTMLWindow, dwFlags); hres = IHTMLWindow2_QueryInterface(pHTMLWindow, &IID_IHTMLPrivateWindow, (void**)&priv_window); if(FAILED(hres)) return hres; hres = IHTMLPrivateWindow_GetAddressBarUrl(priv_window, &url); IHTMLPrivateWindow_Release(priv_window); if(FAILED(hres)) return hres; TRACE("got URL %s\n", debugstr_w(url)); V_VT(params) = (VT_BYREF|VT_VARIANT); V_VARIANTREF(params) = &url_var; V_VT(params+1) = VT_DISPATCH; V_DISPATCH(params+1) = (IDispatch*)This->doc_host->wb; V_VT(&url_var) = VT_BSTR; V_BSTR(&url_var) = url; /* Keep reference to This. It may be released in event handler. */ IShellBrowser_AddRef(&This->IShellBrowser_iface); TRACE(">>>\n"); call_sink(This->doc_host->cps.wbe2, DISPID_DOCUMENTCOMPLETE, &dp); TRACE("<<<\n"); SysFreeString(url); if(This->doc_host) This->doc_host->busy = VARIANT_FALSE; IShellBrowser_Release(&This->IShellBrowser_iface); return S_OK; }
static HRESULT WINAPI DocObjectService_FireNavigateComplete2( IDocObjectService* iface, IHTMLWindow2 *pHTMLWindow2, DWORD dwFlags) { ShellBrowser *This = impl_from_IDocObjectService(iface); IHTMLPrivateWindow *priv_window; VARIANTARG params[2]; DISPPARAMS dp = {params, NULL, 2, 0}; VARIANT url_var; BSTR url; HRESULT hres; TRACE("%p %p %x\n", This, pHTMLWindow2, dwFlags); hres = IHTMLWindow2_QueryInterface(pHTMLWindow2, &IID_IHTMLPrivateWindow, (void**)&priv_window); if(FAILED(hres)) return hres; hres = IHTMLPrivateWindow_GetAddressBarUrl(priv_window, &url); IHTMLPrivateWindow_Release(priv_window); if(FAILED(hres)) return hres; TRACE("got URL %s\n", debugstr_w(url)); set_dochost_url(This->doc_host, url); V_VT(params) = (VT_BYREF|VT_VARIANT); V_BYREF(params) = &url; V_VT(params+1) = VT_DISPATCH; V_DISPATCH(params+1) = This->doc_host->disp; V_VT(&url_var) = VT_BSTR; V_BSTR(&url_var) = url; TRACE(">>>\n"); call_sink(This->doc_host->cps.wbe2, DISPID_NAVIGATECOMPLETE2, &dp); TRACE("<<<\n"); SysFreeString(url); This->doc_host->busy = VARIANT_FALSE; return S_OK; }
static HRESULT STDMETHODCALLTYPE WBServiceProvider_QueryService(IServiceProvider *iface, REFGUID guidService, REFIID riid, void **ppv) { WebBrowser *This = impl_from_IServiceProvider(iface); if(IsEqualGUID(&SID_SHTMLWindow, riid)) { TRACE("(%p)->(SID_SHTMLWindow)\n", This); return IHTMLWindow2_QueryInterface(&This->doc_host.html_window.IHTMLWindow2_iface, riid, ppv); } if(IsEqualGUID(&IID_IBrowserService2, riid)) { TRACE("(%p)->(IID_IBrowserService2 return E_FAIL)\n", This); *ppv = NULL; return E_FAIL; } FIXME("(%p)->(%s, %s %p)\n", This, debugstr_guid(guidService), debugstr_guid(riid), ppv); *ppv = NULL; return E_NOINTERFACE; }