diff --git a/dlls/mshtml/binding.h b/dlls/mshtml/binding.h
new file mode 100644
index 0000000..f3c4d3e
--- /dev/null
+++ b/dlls/mshtml/binding.h
@@ -0,0 +1,112 @@
+/*
+ * Copyright 2011 Jacek Caban for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+typedef struct nsWineURI nsWineURI;
+
+/* Keep sync with request_method_strings in nsio.c */
+typedef enum {
+ METHOD_GET,
+ METHOD_PUT,
+ METHOD_POST
+} REQUEST_METHOD;
+
+typedef struct {
+ nsIHttpChannel nsIHttpChannel_iface;
+ nsIUploadChannel nsIUploadChannel_iface;
+ nsIHttpChannelInternal nsIHttpChannelInternal_iface;
+
+ LONG ref;
+
+ nsWineURI *uri;
+ nsIInputStream *post_data_stream;
+ BOOL post_data_contains_headers;
+ nsILoadGroup *load_group;
+ nsIInterfaceRequestor *notif_callback;
+ nsISupports *owner;
+ nsLoadFlags load_flags;
+ nsIURI *original_uri;
+ nsIURI *referrer;
+ char *content_type;
+ char *charset;
+ PRUint32 response_status;
+ REQUEST_METHOD request_method;
+ struct list response_headers;
+ struct list request_headers;
+ UINT url_scheme;
+} nsChannel;
+
+typedef struct BSCallbackVtbl BSCallbackVtbl;
+
+struct BSCallback {
+ IBindStatusCallback IBindStatusCallback_iface;
+ IServiceProvider IServiceProvider_iface;
+ IHttpNegotiate2 IHttpNegotiate2_iface;
+ IInternetBindInfo IInternetBindInfo_iface;
+
+ const BSCallbackVtbl *vtbl;
+
+ LONG ref;
+
+ LPWSTR headers;
+ HGLOBAL post_data;
+ ULONG post_data_len;
+ ULONG readed;
+ DWORD bindf;
+ BOOL bindinfo_ready;
+
+ IMoniker *mon;
+ IBinding *binding;
+
+ HTMLDocumentNode *doc;
+
+ struct list entry;
+};
+
+typedef struct nsProtocolStream nsProtocolStream;
+
+struct nsChannelBSC {
+ BSCallback bsc;
+
+ HTMLWindow *window;
+
+ nsChannel *nschannel;
+ nsIStreamListener *nslistener;
+ nsISupports *nscontext;
+ BOOL is_js;
+
+ nsProtocolStream *nsstream;
+};
+
+typedef struct {
+ struct list entry;
+ WCHAR *header;
+ WCHAR *data;
+} http_header_t;
+
+HRESULT set_http_header(struct list*,const WCHAR*,int,const WCHAR*,int) DECLSPEC_HIDDEN;
+HRESULT create_redirect_nschannel(const WCHAR*,nsChannel*,nsChannel**) DECLSPEC_HIDDEN;
+
+nsresult on_start_uri_open(NSContainer*,nsIURI*,PRBool*) DECLSPEC_HIDDEN;
+HRESULT hlink_frame_navigate(HTMLDocument*,LPCWSTR,nsChannel*,DWORD,BOOL*) DECLSPEC_HIDDEN;
+HRESULT create_doc_uri(HTMLWindow*,WCHAR*,nsWineURI**) DECLSPEC_HIDDEN;
+HRESULT load_nsuri(HTMLWindow*,nsWineURI*,nsChannelBSC*,DWORD) DECLSPEC_HIDDEN;
+HRESULT set_moniker(HTMLDocument*,IMoniker*,IBindCtx*,nsChannelBSC*,BOOL) DECLSPEC_HIDDEN;
+
+HRESULT create_channelbsc(IMoniker*,WCHAR*,BYTE*,DWORD,nsChannelBSC**) DECLSPEC_HIDDEN;
+HRESULT channelbsc_load_stream(nsChannelBSC*,IStream*) DECLSPEC_HIDDEN;
+void channelbsc_set_channel(nsChannelBSC*,nsChannel*,nsIStreamListener*,nsISupports*) DECLSPEC_HIDDEN;
diff --git a/dlls/mshtml/htmlwindow.c b/dlls/mshtml/htmlwindow.c
index e0d542b..89702b1 100644
--- a/dlls/mshtml/htmlwindow.c
+++ b/dlls/mshtml/htmlwindow.c
@@ -31,6 +31,7 @@
#include "mshtml_private.h"
#include "htmlevent.h"
+#include "binding.h"
#include "resource.h"
WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h
index 7a5b24e..6344b0e 100644
--- a/dlls/mshtml/mshtml_private.h
+++ b/dlls/mshtml/mshtml_private.h
@@ -491,51 +491,6 @@ struct NSContainer {
HWND hwnd;
};
-typedef struct nsWineURI nsWineURI;
-
-nsresult on_start_uri_open(NSContainer*,nsIURI*,PRBool*) DECLSPEC_HIDDEN;
-
-/* Keep sync with request_method_strings in nsio.c */
-typedef enum {
- METHOD_GET,
- METHOD_PUT,
- METHOD_POST
-} REQUEST_METHOD;
-
-typedef struct {
- nsIHttpChannel nsIHttpChannel_iface;
- nsIUploadChannel nsIUploadChannel_iface;
- nsIHttpChannelInternal nsIHttpChannelInternal_iface;
-
- LONG ref;
-
- nsWineURI *uri;
- nsIInputStream *post_data_stream;
- BOOL post_data_contains_headers;
- nsILoadGroup *load_group;
- nsIInterfaceRequestor *notif_callback;
- nsISupports *owner;
- nsLoadFlags load_flags;
- nsIURI *original_uri;
- nsIURI *referrer;
- char *content_type;
- char *charset;
- PRUint32 response_status;
- REQUEST_METHOD request_method;
- struct list response_headers;
- struct list request_headers;
- UINT url_scheme;
-} nsChannel;
-
-typedef struct {
- struct list entry;
- WCHAR *header;
- WCHAR *data;
-} http_header_t;
-
-HRESULT set_http_header(struct list*,const WCHAR*,int,const WCHAR*,int) DECLSPEC_HIDDEN;
-HRESULT create_redirect_nschannel(const WCHAR*,nsChannel*,nsChannel**) DECLSPEC_HIDDEN;
-
typedef struct {
HRESULT (*qi)(HTMLDOMNode*,REFIID,void**);
void (*destructor)(HTMLDOMNode*);
@@ -701,13 +656,9 @@ void release_nsio(void) DECLSPEC_HIDDEN;
BOOL is_gecko_path(const char*) DECLSPEC_HIDDEN;
HRESULT nsuri_to_url(LPCWSTR,BOOL,BSTR*) DECLSPEC_HIDDEN;
-HRESULT create_doc_uri(HTMLWindow*,WCHAR*,nsWineURI**) DECLSPEC_HIDDEN;
-HRESULT load_nsuri(HTMLWindow*,nsWineURI*,nsChannelBSC*,DWORD) DECLSPEC_HIDDEN;
-HRESULT hlink_frame_navigate(HTMLDocument*,LPCWSTR,nsChannel*,DWORD,BOOL*) DECLSPEC_HIDDEN;
HRESULT navigate_url(HTMLWindow*,const WCHAR*,const WCHAR*) DECLSPEC_HIDDEN;
HRESULT set_frame_doc(HTMLFrameBase*,nsIDOMDocument*) DECLSPEC_HIDDEN;
-HRESULT set_moniker(HTMLDocument*,IMoniker*,IBindCtx*,nsChannelBSC*,BOOL) DECLSPEC_HIDDEN;
void call_property_onchanged(ConnectionPoint*,DISPID) DECLSPEC_HIDDEN;
HRESULT call_set_active_object(IOleInPlaceUIWindow*,IOleInPlaceActiveObject*) DECLSPEC_HIDDEN;
@@ -744,10 +695,6 @@ void abort_document_bindings(HTMLDocumentNode*) DECLSPEC_HIDDEN;
HRESULT bind_mon_to_buffer(HTMLDocumentNode*,IMoniker*,void**,DWORD*) DECLSPEC_HIDDEN;
-HRESULT create_channelbsc(IMoniker*,WCHAR*,BYTE*,DWORD,nsChannelBSC**) DECLSPEC_HIDDEN;
-HRESULT channelbsc_load_stream(nsChannelBSC*,IStream*) DECLSPEC_HIDDEN;
-void channelbsc_set_channel(nsChannelBSC*,nsChannel*,nsIStreamListener*,nsISupports*) DECLSPEC_HIDDEN;
-
void set_ready_state(HTMLWindow*,READYSTATE) DECLSPEC_HIDDEN;
HRESULT HTMLSelectionObject_Create(HTMLDocumentNode*,nsISelection*,IHTMLSelectionObject**) DECLSPEC_HIDDEN;
diff --git a/dlls/mshtml/navigate.c b/dlls/mshtml/navigate.c
index 6d84d3f..7c38935 100644
--- a/dlls/mshtml/navigate.c
+++ b/dlls/mshtml/navigate.c
@@ -38,22 +38,23 @@
#include "wine/unicode.h"
#include "mshtml_private.h"
+#include "binding.h"
WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
#define CONTENT_LENGTH "Content-Length"
#define UTF16_STR "utf-16"
-typedef struct {
+struct nsProtocolStream {
nsIInputStream nsIInputStream_iface;
LONG ref;
char buf[1024];
DWORD buf_size;
-} nsProtocolStream;
+};
-typedef struct {
+struct BSCallbackVtbl {
void (*destroy)(BSCallback*);
HRESULT (*init_bindinfo)(BSCallback*);
HRESULT (*start_binding)(BSCallback*);
@@ -62,31 +63,6 @@ typedef struct {
HRESULT (*on_progress)(BSCallback*,ULONG,LPCWSTR);
HRESULT (*on_response)(BSCallback*,DWORD,LPCWSTR);
HRESULT (*beginning_transaction)(BSCallback*,WCHAR**);
-} BSCallbackVtbl;
-
-struct BSCallback {
- IBindStatusCallback IBindStatusCallback_iface;
- IServiceProvider IServiceProvider_iface;
- IHttpNegotiate2 IHttpNegotiate2_iface;
- IInternetBindInfo IInternetBindInfo_iface;
-
- const BSCallbackVtbl *vtbl;
-
- LONG ref;
-
- LPWSTR headers;
- HGLOBAL post_data;
- ULONG post_data_len;
- ULONG readed;
- DWORD bindf;
- BOOL bindinfo_ready;
-
- IMoniker *mon;
- IBinding *binding;
-
- HTMLDocumentNode *doc;
-
- struct list entry;
};
static inline nsProtocolStream *impl_from_nsIInputStream(nsIInputStream *iface)
@@ -862,18 +838,6 @@ HRESULT bind_mon_to_buffer(HTMLDocumentNode *doc, IMoniker *mon, void **buf, DWO
return hres;
}
-struct nsChannelBSC {
- BSCallback bsc;
-
- HTMLWindow *window;
-
- nsChannel *nschannel;
- nsIStreamListener *nslistener;
- nsISupports *nscontext;
-
- nsProtocolStream *nsstream;
-};
-
static HRESULT read_post_data_stream(nsChannelBSC *This, nsChannel *nschannel)
{
PRUint32 data_len = 0, available = 0;
diff --git a/dlls/mshtml/nsembed.c b/dlls/mshtml/nsembed.c
index 2cac2b2..73817da 100644
--- a/dlls/mshtml/nsembed.c
+++ b/dlls/mshtml/nsembed.c
@@ -35,6 +35,7 @@
#include "mshtml_private.h"
#include "htmlevent.h"
+#include "binding.h"
WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
WINE_DECLARE_DEBUG_CHANNEL(gecko);
diff --git a/dlls/mshtml/nsio.c b/dlls/mshtml/nsio.c
index ca2b763..7d26529 100644
--- a/dlls/mshtml/nsio.c
+++ b/dlls/mshtml/nsio.c
@@ -36,6 +36,7 @@
#include "wine/unicode.h"
#include "mshtml_private.h"
+#include "binding.h"
WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
diff --git a/dlls/mshtml/persist.c b/dlls/mshtml/persist.c
index 6915e3d..64e27ed 100644
--- a/dlls/mshtml/persist.c
+++ b/dlls/mshtml/persist.c
@@ -37,6 +37,7 @@
#include "mshtml_private.h"
#include "htmlevent.h"
+#include "binding.h"
#include "resource.h"
WINE_DEFAULT_DEBUG_CHANNEL(mshtml);