mshtml: Use Uri_CREATE_ALLOW_IMPLICIT_FILE_SCHEME in CreateUri calls.
[wine.git] / dlls / mshtml / binding.h
blob4e86b76555c0b667ff546c5637aa59302a552ded
1 /*
2 * Copyright 2011 Jacek Caban for CodeWeavers
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 typedef struct nsWineURI nsWineURI;
21 /* Keep sync with request_method_strings in nsio.c */
22 typedef enum {
23 METHOD_GET,
24 METHOD_PUT,
25 METHOD_POST
26 } REQUEST_METHOD;
28 typedef struct {
29 nsIHttpChannel nsIHttpChannel_iface;
30 nsIUploadChannel nsIUploadChannel_iface;
31 nsIHttpChannelInternal nsIHttpChannelInternal_iface;
33 LONG ref;
35 nsWineURI *uri;
36 nsIInputStream *post_data_stream;
37 BOOL post_data_contains_headers;
38 nsILoadGroup *load_group;
39 nsIInterfaceRequestor *notif_callback;
40 nsISupports *owner;
41 nsLoadFlags load_flags;
42 nsIURI *original_uri;
43 nsIURI *referrer;
44 char *content_type;
45 char *charset;
46 UINT32 response_status;
47 REQUEST_METHOD request_method;
48 struct list response_headers;
49 struct list request_headers;
50 } nsChannel;
52 typedef struct BSCallbackVtbl BSCallbackVtbl;
54 struct BSCallback {
55 IBindStatusCallback IBindStatusCallback_iface;
56 IServiceProvider IServiceProvider_iface;
57 IHttpNegotiate2 IHttpNegotiate2_iface;
58 IInternetBindInfo IInternetBindInfo_iface;
60 const BSCallbackVtbl *vtbl;
62 LONG ref;
64 LPWSTR headers;
65 HGLOBAL post_data;
66 ULONG post_data_len;
67 ULONG readed;
68 DWORD bindf;
69 BOOL bindinfo_ready;
70 int bom;
72 IMoniker *mon;
73 IBinding *binding;
75 HTMLInnerWindow *window;
77 struct list entry;
80 typedef struct nsProtocolStream nsProtocolStream;
82 struct nsChannelBSC {
83 BSCallback bsc;
85 nsChannel *nschannel;
86 nsIStreamListener *nslistener;
87 nsISupports *nscontext;
88 BOOL is_js;
89 BOOL is_doc_channel;
90 BOOL response_processed;
92 nsProtocolStream *nsstream;
95 typedef struct {
96 struct list entry;
97 WCHAR *header;
98 WCHAR *data;
99 } http_header_t;
101 #define BINDING_NAVIGATED 0x0001
102 #define BINDING_REPLACE 0x0002
103 #define BINDING_FROMHIST 0x0004
104 #define BINDING_REFRESH 0x0008
106 HRESULT set_http_header(struct list*,const WCHAR*,int,const WCHAR*,int) DECLSPEC_HIDDEN;
107 HRESULT create_redirect_nschannel(const WCHAR*,nsChannel*,nsChannel**) DECLSPEC_HIDDEN;
109 nsresult on_start_uri_open(NSContainer*,nsIURI*,cpp_bool*) DECLSPEC_HIDDEN;
110 HRESULT hlink_frame_navigate(HTMLDocument*,LPCWSTR,nsChannel*,DWORD,BOOL*) DECLSPEC_HIDDEN;
111 HRESULT create_doc_uri(HTMLOuterWindow*,const WCHAR*,nsWineURI**) DECLSPEC_HIDDEN;
112 HRESULT load_nsuri(HTMLOuterWindow*,nsWineURI*,nsChannelBSC*,DWORD) DECLSPEC_HIDDEN;
113 HRESULT set_moniker(HTMLDocument*,IMoniker*,IBindCtx*,nsChannelBSC*,BOOL) DECLSPEC_HIDDEN;
114 void prepare_for_binding(HTMLDocument*,IMoniker*,DWORD) DECLSPEC_HIDDEN;
115 HRESULT super_navigate(HTMLOuterWindow*,IUri*,DWORD,const WCHAR*,BYTE*,DWORD) DECLSPEC_HIDDEN;
116 HRESULT load_uri(HTMLOuterWindow*,IUri*,DWORD) DECLSPEC_HIDDEN;
117 HRESULT navigate_new_window(HTMLOuterWindow*,IUri*,const WCHAR*,IHTMLWindow2**) DECLSPEC_HIDDEN;
118 HRESULT navigate_url(HTMLOuterWindow*,const WCHAR*,IUri*,DWORD) DECLSPEC_HIDDEN;
120 HRESULT create_channelbsc(IMoniker*,const WCHAR*,BYTE*,DWORD,BOOL,nsChannelBSC**) DECLSPEC_HIDDEN;
121 HRESULT channelbsc_load_stream(HTMLInnerWindow*,IStream*) DECLSPEC_HIDDEN;
122 void channelbsc_set_channel(nsChannelBSC*,nsChannel*,nsIStreamListener*,nsISupports*) DECLSPEC_HIDDEN;
123 IUri *nsuri_get_uri(nsWineURI*) DECLSPEC_HIDDEN;
125 HRESULT create_relative_uri(HTMLOuterWindow*,const WCHAR*,IUri**) DECLSPEC_HIDDEN;
126 HRESULT create_uri(const WCHAR*,DWORD,IUri**) DECLSPEC_HIDDEN;
127 IUri *get_uri_nofrag(IUri*) DECLSPEC_HIDDEN;
129 void set_current_mon(HTMLOuterWindow*,IMoniker*,DWORD) DECLSPEC_HIDDEN;
130 void set_current_uri(HTMLOuterWindow*,IUri*) DECLSPEC_HIDDEN;
132 HRESULT bind_mon_to_wstr(HTMLInnerWindow*,IMoniker*,WCHAR**) DECLSPEC_HIDDEN;