Jacek Caban : mshtml: Allow customization of BeginningTransaction.
Alexandre Julliard
julliard at winehq.org
Wed Aug 4 12:27:21 CDT 2010
Module: wine
Branch: master
Commit: 508aec93c103f0e02eb5105707dfa3dcd98eb8a4
URL: http://source.winehq.org/git/wine.git/?a=commit;h=508aec93c103f0e02eb5105707dfa3dcd98eb8a4
Author: Jacek Caban <jacek at codeweavers.com>
Date: Tue Aug 3 21:39:04 2010 +0200
mshtml: Allow customization of BeginningTransaction.
---
dlls/mshtml/navigate.c | 40 ++++++++++++++++++++++++++++++----------
1 files changed, 30 insertions(+), 10 deletions(-)
diff --git a/dlls/mshtml/navigate.c b/dlls/mshtml/navigate.c
index 3f83456..fc37f4d 100644
--- a/dlls/mshtml/navigate.c
+++ b/dlls/mshtml/navigate.c
@@ -63,6 +63,7 @@ typedef struct {
HRESULT (*read_data)(BSCallback*,IStream*);
HRESULT (*on_progress)(BSCallback*,ULONG,LPCWSTR);
HRESULT (*on_response)(BSCallback*,DWORD,LPCWSTR);
+ HRESULT (*beginning_transaction)(BSCallback*,WCHAR**);
} BSCallbackVtbl;
struct BSCallback {
@@ -468,19 +469,26 @@ static HRESULT WINAPI HttpNegotiate_BeginningTransaction(IHttpNegotiate2 *iface,
LPCWSTR szURL, LPCWSTR szHeaders, DWORD dwReserved, LPWSTR *pszAdditionalHeaders)
{
BSCallback *This = HTTPNEG_THIS(iface);
- DWORD size;
+ HRESULT hres;
TRACE("(%p)->(%s %s %d %p)\n", This, debugstr_w(szURL), debugstr_w(szHeaders),
dwReserved, pszAdditionalHeaders);
- if(!This->headers) {
- *pszAdditionalHeaders = NULL;
- return S_OK;
- }
+ *pszAdditionalHeaders = NULL;
- size = (strlenW(This->headers)+1)*sizeof(WCHAR);
- *pszAdditionalHeaders = CoTaskMemAlloc(size);
- memcpy(*pszAdditionalHeaders, This->headers, size);
+ hres = This->vtbl->beginning_transaction(This, pszAdditionalHeaders);
+ if(hres != S_FALSE)
+ return hres;
+
+ if(This->headers) {
+ DWORD size;
+
+ size = (strlenW(This->headers)+1)*sizeof(WCHAR);
+ *pszAdditionalHeaders = CoTaskMemAlloc(size);
+ if(!*pszAdditionalHeaders)
+ return E_OUTOFMEMORY;
+ memcpy(*pszAdditionalHeaders, This->headers, size);
+ }
return S_OK;
}
@@ -864,6 +872,11 @@ static HRESULT BufferBSC_on_response(BSCallback *bsc, DWORD response_code,
return S_OK;
}
+static HRESULT BufferBSC_beginning_transaction(BSCallback *bsc, WCHAR **additional_headers)
+{
+ return S_FALSE;
+}
+
#undef BUFFERBSC_THIS
static const BSCallbackVtbl BufferBSCVtbl = {
@@ -873,7 +886,8 @@ static const BSCallbackVtbl BufferBSCVtbl = {
BufferBSC_stop_binding,
BufferBSC_read_data,
BufferBSC_on_progress,
- BufferBSC_on_response
+ BufferBSC_on_response,
+ BufferBSC_beginning_transaction
};
@@ -1158,6 +1172,11 @@ static HRESULT nsChannelBSC_on_response(BSCallback *bsc, DWORD response_code,
return S_OK;
}
+static HRESULT nsChannelBSC_beginning_transaction(BSCallback *bsc, WCHAR **additional_headers)
+{
+ return S_FALSE;
+}
+
#undef NSCHANNELBSC_THIS
static const BSCallbackVtbl nsChannelBSCVtbl = {
@@ -1167,7 +1186,8 @@ static const BSCallbackVtbl nsChannelBSCVtbl = {
nsChannelBSC_stop_binding,
nsChannelBSC_read_data,
nsChannelBSC_on_progress,
- nsChannelBSC_on_response
+ nsChannelBSC_on_response,
+ nsChannelBSC_beginning_transaction
};
HRESULT create_channelbsc(IMoniker *mon, WCHAR *headers, BYTE *post_data, DWORD post_data_size, nsChannelBSC **retval)
More information about the wine-cvs
mailing list