Jacek Caban : mshtml:
Add create_nscallback function to allow using BSCallback out of
navigate.c .
Alexandre Julliard
julliard at wine.codeweavers.com
Sat Jun 3 05:24:40 CDT 2006
Module: wine
Branch: refs/heads/master
Commit: 813e82f253d5d9dc424c050d56c561c04371a0d5
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=813e82f253d5d9dc424c050d56c561c04371a0d5
Author: Jacek Caban <jacek at codeweavers.com>
Date: Sat Jun 3 00:37:58 2006 +0200
mshtml: Add create_nscallback function to allow using BSCallback out of navigate.c.
---
dlls/mshtml/mshtml_private.h | 19 +++++++++++++++++
dlls/mshtml/navigate.c | 48 +++++++++++++-----------------------------
2 files changed, 34 insertions(+), 33 deletions(-)
diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h
index 44105be..83bae7f 100644
--- a/dlls/mshtml/mshtml_private.h
+++ b/dlls/mshtml/mshtml_private.h
@@ -45,6 +45,7 @@ #define NS_DOCUMENT_NODE 9
typedef struct HTMLDOMNode HTMLDOMNode;
typedef struct ConnectionPoint ConnectionPoint;
+typedef struct BSCallback BSCallback;
typedef struct {
const IHTMLDocument2Vtbl *lpHTMLDocument2Vtbl;
@@ -114,6 +115,19 @@ struct NSContainer {
BOOL load_call; /* hack */
};
+struct BSCallback {
+ const IBindStatusCallbackVtbl *lpBindStatusCallbackVtbl;
+ const IServiceProviderVtbl *lpServiceProviderVtbl;
+ const IHttpNegotiate2Vtbl *lpHttpNegotiate2Vtbl;
+ const IInternetBindInfoVtbl *lpInternetBindInfoVtbl;
+
+ LONG ref;
+
+ LPWSTR headers;
+ HGLOBAL post_data;
+ ULONG post_data_len;
+};
+
struct HTMLDOMNode {
const IHTMLDOMNodeVtbl *lpHTMLDOMNodeVtbl;
@@ -185,6 +199,10 @@ #define NSTOOLTIP(x) ((nsITooltipLis
#define NSWEAKREF(x) ((nsIWeakReference*) &(x)->lpWeakReferenceVtbl)
#define NSSUPWEAKREF(x) ((nsISupportsWeakReference*) &(x)->lpSupportsWeakReferenceVtbl)
+#define HTTPNEG(x) ((IHttpNegotiate2*) &(x)->lpHttpNegotiate2Vtbl)
+#define BINDINFO(x) ((IInternetBindInfo*) &(x)->lpInternetBindInfoVtbl);
+
+
#define HTMLELEM(x) ((IHTMLElement*) &(x)->lpHTMLElementVtbl)
#define HTMLELEM2(x) ((IHTMLElement2*) &(x)->lpHTMLElement2Vtbl)
#define HTMLDOMNODE(x) ((IHTMLDOMNode*) &(x)->lpHTMLDOMNodeVtbl)
@@ -235,6 +253,7 @@ PRUint32 nsAString_GetData(const nsAStri
void nsAString_Finish(nsAString*);
nsIInputStream *create_nsstream(const char*,PRInt32);
+BSCallback *create_bscallback(HTMLDocument*,LPCOLESTR);
IHlink *Hlink_Create(void);
diff --git a/dlls/mshtml/navigate.c b/dlls/mshtml/navigate.c
index 1535f58..3101c92 100644
--- a/dlls/mshtml/navigate.c
+++ b/dlls/mshtml/navigate.c
@@ -41,22 +41,6 @@ #define CONTENT_LENGTH "Content-Length"
#define STATUSCLB_THIS(iface) DEFINE_THIS(BSCallback, BindStatusCallback, iface)
-typedef struct {
- const IBindStatusCallbackVtbl *lpBindStatusCallbackVtbl;
- const IServiceProviderVtbl *lpServiceProviderVtbl;
- const IHttpNegotiate2Vtbl *lpHttpNegotiate2Vtbl;
- const IInternetBindInfoVtbl *lpInternetBindInfoVtbl;
-
- LONG ref;
-
- LPWSTR headers;
- HGLOBAL post_data;
- ULONG post_data_len;
-} BSCallback;
-
-#define HTTPNEG(x) ((IHttpNegotiate2*) &(x)->lpHttpNegotiate2Vtbl)
-#define BINDINFO(x) ((IInternetBindInfo*) &(x)->lpInternetBindInfoVtbl);
-
static HRESULT WINAPI BindStatusCallback_QueryInterface(IBindStatusCallback *iface,
REFIID riid, void **ppv)
{
@@ -375,8 +359,7 @@ static const IServiceProviderVtbl Servic
BSCServiceProvider_QueryService
};
-static IBindStatusCallback *BSCallback_Create(HTMLDocument *doc, LPCOLESTR url,
- HGLOBAL post_data, ULONG post_data_len, LPWSTR headers)
+BSCallback *create_bscallback(HTMLDocument *doc, LPCOLESTR url)
{
BSCallback *ret = HeapAlloc(GetProcessHeap(), 0, sizeof(BSCallback));
@@ -385,11 +368,11 @@ static IBindStatusCallback *BSCallback_C
ret->lpHttpNegotiate2Vtbl = &HttpNegotiate2Vtbl;
ret->lpInternetBindInfoVtbl = &InternetBindInfoVtbl;
ret->ref = 1;
- ret->post_data = post_data;
- ret->headers = headers;
- ret->post_data_len = post_data_len;
+ ret->post_data = NULL;
+ ret->headers = NULL;
+ ret->post_data_len = 0;
- return STATUSCLB(ret);
+ return ret;
}
static void parse_post_data(nsIInputStream *post_data_stream, LPWSTR *headers_ret,
@@ -466,22 +449,21 @@ static void parse_post_data(nsIInputStre
void hlink_frame_navigate(HTMLDocument *doc, IHlinkFrame *hlink_frame,
LPCWSTR uri, nsIInputStream *post_data_stream, DWORD hlnf)
{
- IBindStatusCallback *callback;
+ BSCallback *callback;
IBindCtx *bindctx;
IMoniker *mon;
IHlink *hlink;
- PRUint32 post_data_len = 0;
- HGLOBAL post_data = NULL;
- LPWSTR headers = NULL;
+
+ callback = create_bscallback(doc, uri);
if(post_data_stream) {
- parse_post_data(post_data_stream, &headers, &post_data, &post_data_len);
- TRACE("headers = %s post_data = %s\n", debugstr_w(headers),
- debugstr_an(post_data, post_data_len));
+ parse_post_data(post_data_stream, &callback->headers, &callback->post_data,
+ &callback->post_data_len);
+ TRACE("headers = %s post_data = %s\n", debugstr_w(callback->headers),
+ debugstr_an(callback->post_data, callback->post_data_len));
}
- callback = BSCallback_Create(doc, uri, post_data, post_data_len, headers);
- CreateAsyncBindCtx(0, callback, NULL, &bindctx);
+ CreateAsyncBindCtx(0, STATUSCLB(callback), NULL, &bindctx);
hlink = Hlink_Create();
@@ -493,10 +475,10 @@ void hlink_frame_navigate(HTMLDocument *
IHlink_SetTargetFrameName(hlink, wszBlank); /* FIXME */
}
- IHlinkFrame_Navigate(hlink_frame, hlnf, bindctx, callback, hlink);
+ IHlinkFrame_Navigate(hlink_frame, hlnf, bindctx, STATUSCLB(callback), hlink);
IBindCtx_Release(bindctx);
- IBindStatusCallback_Release(callback);
+ IBindStatusCallback_Release(STATUSCLB(callback));
IMoniker_Release(mon);
}
More information about the wine-cvs
mailing list