void process_document_response_headers(HTMLDocumentNode *doc, IBinding *binding) { IWinInetHttpInfo *http_info; char buf[1024]; DWORD size; HRESULT hres; hres = IBinding_QueryInterface(binding, &IID_IWinInetHttpInfo, (void**)&http_info); if(FAILED(hres)) { TRACE("No IWinInetHttpInfo\n"); return; } size = sizeof(buf); strcpy(buf, "X-UA-Compatible"); hres = IWinInetHttpInfo_QueryInfo(http_info, HTTP_QUERY_CUSTOM, buf, &size, NULL, NULL); if(hres == S_OK && size) { compat_mode_t document_mode; WCHAR *header; TRACE("size %u\n", size); header = heap_strdupAtoW(buf); if(header && parse_ua_compatible(header, &document_mode)) { TRACE("setting document mode %d\n", document_mode); set_document_mode(doc, document_mode, FALSE); } heap_free(header); } IWinInetHttpInfo_Release(http_info); }
static HRESULT WINAPI statusclb_OnStartBinding(IBindStatusCallback *iface, DWORD dwReserved, IBinding *pib) { HRESULT hres; IMoniker *mon; CHECK_EXPECT(OnStartBinding); ok(pib != NULL, "pib should not be NULL\n"); hres = IBinding_QueryInterface(pib, &IID_IMoniker, (void**)&mon); ok(hres == E_NOINTERFACE, "IBinding should not have IMoniker interface\n"); if(SUCCEEDED(hres)) IMoniker_Release(mon); return S_OK; }
static DWORD get_http_status_code(IBinding *binding) { IWinInetHttpInfo *http_info; DWORD status, size = sizeof(DWORD); HRESULT hres; hres = IBinding_QueryInterface(binding, &IID_IWinInetHttpInfo, (void**)&http_info); if(FAILED(hres)) return HTTP_STATUS_OK; hres = IWinInetHttpInfo_QueryInfo(http_info, HTTP_QUERY_STATUS_CODE|HTTP_QUERY_FLAG_NUMBER, &status, &size, NULL, NULL); IWinInetHttpInfo_Release(http_info); if(FAILED(hres)) return HTTP_STATUS_OK; return status; }
static HRESULT WINAPI InternetProtocolSink_QueryInterface(IInternetProtocolSink *iface, REFIID riid, void **ppv) { Binding *This = PROTSINK_THIS(iface); return IBinding_QueryInterface(BINDING(This), riid, ppv); }
static HRESULT WINAPI ServiceProvider_QueryInterface(IServiceProvider *iface, REFIID riid, void **ppv) { Binding *This = SERVPROV_THIS(iface); return IBinding_QueryInterface(BINDING(This), riid, ppv); }
static HRESULT WINAPI WinInetHttpInfo_QueryInterface(IWinInetHttpInfo *iface, REFIID riid, void **ppv) { Binding *This = INETINFO_THIS(iface); return IBinding_QueryInterface(BINDING(This), riid, ppv); }
static HRESULT WINAPI InternetBindInfo_QueryInterface(IInternetBindInfo *iface, REFIID riid, void **ppv) { Binding *This = BINDINF_THIS(iface); return IBinding_QueryInterface(BINDING(This), riid, ppv); }
static HRESULT WINAPI HttpInfo_QueryInterface(IWinInetHttpInfo *iface, REFIID riid, void **ppv) { HttpProtocol *This = INETINFO_THIS(iface); return IBinding_QueryInterface(PROTOCOL(This), riid, ppv); }
static HRESULT WINAPI InternetProtocolSink_QueryInterface(IInternetProtocolSink *iface, REFIID riid, void **ppv) { Binding *This = impl_from_IInternetProtocolSink(iface); return IBinding_QueryInterface(&This->IBinding_iface, riid, ppv); }
static HRESULT WINAPI ServiceProvider_QueryInterface(IServiceProvider *iface, REFIID riid, void **ppv) { Binding *This = impl_from_IServiceProvider(iface); return IBinding_QueryInterface(&This->IBinding_iface, riid, ppv); }
static HRESULT WINAPI WinInetHttpInfo_QueryInterface(IWinInetHttpInfo *iface, REFIID riid, void **ppv) { Binding *This = impl_from_IWinInetHttpInfo(iface); return IBinding_QueryInterface(&This->IBinding_iface, riid, ppv); }