kernel32: Avoid returning the same name when GetTempFileName is called twice in a...
[wine/multimedia.git] / dlls / shdocvw / persist.c
blob6c4f1e593be49416821670ac0654016afb3da2e2
1 /*
2 * Implementation of IPersist interfaces for WebBrowser control
4 * Copyright 2001 John R. Sheets (for CodeWeavers)
5 * Copyright 2005 Jacek Caban
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
22 #include "wine/debug.h"
23 #include "shdocvw.h"
25 WINE_DEFAULT_DEBUG_CHANNEL(shdocvw);
27 /**********************************************************************
28 * Implement the IPersistStorage interface
31 #define PERSTORAGE_THIS(ifce) DEFINE_THIS(WebBrowser, PersistStorage, iface)
33 static HRESULT WINAPI PersistStorage_QueryInterface(IPersistStorage *iface,
34 REFIID riid, LPVOID *ppobj)
36 WebBrowser *This = PERSTORAGE_THIS(iface);
37 return IWebBrowser_QueryInterface(WEBBROWSER(This), riid, ppobj);
40 static ULONG WINAPI PersistStorage_AddRef(IPersistStorage *iface)
42 WebBrowser *This = PERSTORAGE_THIS(iface);
43 return IWebBrowser_AddRef(WEBBROWSER(This));
46 static ULONG WINAPI PersistStorage_Release(IPersistStorage *iface)
48 WebBrowser *This = PERSTORAGE_THIS(iface);
49 return IWebBrowser_Release(WEBBROWSER(This));
52 static HRESULT WINAPI PersistStorage_GetClassID(IPersistStorage *iface, CLSID *pClassID)
54 WebBrowser *This = PERSTORAGE_THIS(iface);
55 FIXME("(%p)->(%p)\n", This, pClassID);
56 return E_NOTIMPL;
59 static HRESULT WINAPI PersistStorage_IsDirty(IPersistStorage *iface)
61 WebBrowser *This = PERSTORAGE_THIS(iface);
62 FIXME("(%p)\n", This);
63 return E_NOTIMPL;
66 static HRESULT WINAPI PersistStorage_InitNew(IPersistStorage *iface, LPSTORAGE pStg)
68 WebBrowser *This = PERSTORAGE_THIS(iface);
69 FIXME("(%p)->(%p)\n", This, pStg);
70 return S_OK;
73 static HRESULT WINAPI PersistStorage_Load(IPersistStorage *iface, LPSTORAGE pStg)
75 WebBrowser *This = PERSTORAGE_THIS(iface);
76 FIXME("(%p)->(%p)\n", This, pStg);
77 return E_NOTIMPL;
80 static HRESULT WINAPI PersistStorage_Save(IPersistStorage *iface, LPSTORAGE pStg,
81 BOOL fSameAsLoad)
83 WebBrowser *This = PERSTORAGE_THIS(iface);
84 FIXME("(%p)->(%p %x)\n", This, pStg, fSameAsLoad);
85 return E_NOTIMPL;
88 static HRESULT WINAPI PersistStorage_SaveCompleted(IPersistStorage *iface, LPSTORAGE pStgNew)
90 WebBrowser *This = PERSTORAGE_THIS(iface);
91 FIXME("(%p)->(%p)\n", This, pStgNew);
92 return E_NOTIMPL;
95 static const IPersistStorageVtbl PersistStorageVtbl =
97 PersistStorage_QueryInterface,
98 PersistStorage_AddRef,
99 PersistStorage_Release,
100 PersistStorage_GetClassID,
101 PersistStorage_IsDirty,
102 PersistStorage_InitNew,
103 PersistStorage_Load,
104 PersistStorage_Save,
105 PersistStorage_SaveCompleted
108 /**********************************************************************
109 * Implement the IPersistMemory interface
112 #define PERMEMORY_THIS(ifce) DEFINE_THIS(WebBrowser, PersistMemory, iface)
114 static HRESULT WINAPI PersistMemory_QueryInterface(IPersistMemory *iface,
115 REFIID riid, LPVOID *ppobj)
117 WebBrowser *This = PERMEMORY_THIS(iface);
118 return IWebBrowser_QueryInterface(WEBBROWSER(This), riid, ppobj);
121 static ULONG WINAPI PersistMemory_AddRef(IPersistMemory *iface)
123 WebBrowser *This = PERMEMORY_THIS(iface);
124 return IWebBrowser_AddRef(WEBBROWSER(This));
127 static ULONG WINAPI PersistMemory_Release(IPersistMemory *iface)
129 WebBrowser *This = PERMEMORY_THIS(iface);
130 return IWebBrowser_Release(WEBBROWSER(This));
133 static HRESULT WINAPI PersistMemory_GetClassID(IPersistMemory *iface, CLSID *pClassID)
135 WebBrowser *This = PERMEMORY_THIS(iface);
136 FIXME("(%p)->(%p)\n", This, pClassID);
137 return E_NOTIMPL;
140 static HRESULT WINAPI PersistMemory_IsDirty(IPersistMemory *iface)
142 WebBrowser *This = PERMEMORY_THIS(iface);
143 FIXME("(%p)\n", This);
144 return E_NOTIMPL;
147 static HRESULT WINAPI PersistMemory_InitNew(IPersistMemory *iface)
149 WebBrowser *This = PERMEMORY_THIS(iface);
150 FIXME("(%p)\n", This);
151 return S_OK;
154 static HRESULT WINAPI PersistMemory_Load(IPersistMemory *iface, LPVOID pMem, ULONG cbSize)
156 WebBrowser *This = PERMEMORY_THIS(iface);
157 FIXME("(%p)->(%p %x)\n", This, pMem, cbSize);
158 return S_OK;
161 static HRESULT WINAPI PersistMemory_Save(IPersistMemory *iface, LPVOID pMem,
162 BOOL fClearDirty, ULONG cbSize)
164 WebBrowser *This = PERMEMORY_THIS(iface);
165 FIXME("(%p)->(%p %x %x)\n", This, pMem, fClearDirty, cbSize);
166 return E_NOTIMPL;
169 static HRESULT WINAPI PersistMemory_GetSizeMax(IPersistMemory *iface, ULONG *pCbSize)
171 WebBrowser *This = PERMEMORY_THIS(iface);
172 FIXME("(%p)->(%p)\n", This, pCbSize);
173 return E_NOTIMPL;
176 static const IPersistMemoryVtbl PersistMemoryVtbl =
178 PersistMemory_QueryInterface,
179 PersistMemory_AddRef,
180 PersistMemory_Release,
181 PersistMemory_GetClassID,
182 PersistMemory_IsDirty,
183 PersistMemory_Load,
184 PersistMemory_Save,
185 PersistMemory_GetSizeMax,
186 PersistMemory_InitNew
189 /**********************************************************************
190 * Implement the IPersistStreamInit interface
193 #define PERSTRINIT_THIS(iface) DEFINE_THIS(WebBrowser, PersistStreamInit, iface)
195 static HRESULT WINAPI PersistStreamInit_QueryInterface(IPersistStreamInit *iface,
196 REFIID riid, LPVOID *ppobj)
198 WebBrowser *This = PERSTRINIT_THIS(iface);
199 return IWebBrowser_QueryInterface(WEBBROWSER(This), riid, ppobj);
202 static ULONG WINAPI PersistStreamInit_AddRef(IPersistStreamInit *iface)
204 WebBrowser *This = PERSTRINIT_THIS(iface);
205 return IWebBrowser_AddRef(WEBBROWSER(This));
208 static ULONG WINAPI PersistStreamInit_Release(IPersistStreamInit *iface)
210 WebBrowser *This = PERSTRINIT_THIS(iface);
211 return IWebBrowser_Release(WEBBROWSER(This));
214 static HRESULT WINAPI PersistStreamInit_GetClassID(IPersistStreamInit *iface, CLSID *pClassID)
216 WebBrowser *This = PERSTRINIT_THIS(iface);
217 return IPersistStorage_GetClassID(PERSTORAGE(This), pClassID);
220 static HRESULT WINAPI PersistStreamInit_IsDirty(IPersistStreamInit *iface)
222 WebBrowser *This = PERSTRINIT_THIS(iface);
223 return IPersistStorage_IsDirty(PERSTORAGE(This));
226 static HRESULT WINAPI PersistStreamInit_Load(IPersistStreamInit *iface, LPSTREAM pStg)
228 WebBrowser *This = PERSTRINIT_THIS(iface);
229 FIXME("(%p)->(%p)\n", This, pStg);
230 return S_OK;
233 static HRESULT WINAPI PersistStreamInit_Save(IPersistStreamInit *iface, LPSTREAM pStg,
234 BOOL fSameAsLoad)
236 WebBrowser *This = PERSTRINIT_THIS(iface);
237 FIXME("(%p)->(%p %x)\n", This, pStg, fSameAsLoad);
238 return E_NOTIMPL;
241 static HRESULT WINAPI PersistStreamInit_GetSizeMax(IPersistStreamInit *iface,
242 ULARGE_INTEGER *pcbSize)
244 WebBrowser *This = PERSTRINIT_THIS(iface);
245 FIXME("(%p)->(%p)\n", This, pcbSize);
246 return E_NOTIMPL;
249 static HRESULT WINAPI PersistStreamInit_InitNew(IPersistStreamInit *iface)
251 WebBrowser *This = PERSTRINIT_THIS(iface);
252 FIXME("(%p)\n", This);
253 return S_OK;
256 #undef PERSTRINIT_THIS
258 static const IPersistStreamInitVtbl PersistStreamInitVtbl =
260 PersistStreamInit_QueryInterface,
261 PersistStreamInit_AddRef,
262 PersistStreamInit_Release,
263 PersistStreamInit_GetClassID,
264 PersistStreamInit_IsDirty,
265 PersistStreamInit_Load,
266 PersistStreamInit_Save,
267 PersistStreamInit_GetSizeMax,
268 PersistStreamInit_InitNew
271 void WebBrowser_Persist_Init(WebBrowser *This)
273 This->lpPersistStorageVtbl = &PersistStorageVtbl;
274 This->lpPersistMemoryVtbl = &PersistMemoryVtbl;
275 This->lpPersistStreamInitVtbl = &PersistStreamInitVtbl;