2 * Implementation of IWebBrowser interface 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22 #include "wine/debug.h"
27 WINE_DEFAULT_DEBUG_CHANNEL(shdocvw);
29 /**********************************************************************
30 * Implement the IWebBrowser interface
33 #define WEBBROWSER_THIS(iface) DEFINE_THIS(WebBrowser, WebBrowser2, iface)
35 static HRESULT WINAPI WebBrowser_QueryInterface(IWebBrowser2 *iface, REFIID riid, LPVOID *ppv)
37 WebBrowser *This = WEBBROWSER_THIS(iface);
43 if(IsEqualGUID(&IID_IUnknown, riid)) {
44 TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
45 *ppv = WEBBROWSER(This);
46 }else if(IsEqualGUID(&IID_IDispatch, riid)) {
47 TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv);
48 *ppv = WEBBROWSER(This);
49 }else if(IsEqualGUID(&IID_IWebBrowser, riid)) {
50 TRACE("(%p)->(IID_IWebBrowser %p)\n", This, ppv);
51 *ppv = WEBBROWSER(This);
52 }else if(IsEqualGUID(&IID_IWebBrowserApp, riid)) {
53 TRACE("(%p)->(IID_IWebBrowserApp %p)\n", This, ppv);
54 *ppv = WEBBROWSER(This);
55 }else if(IsEqualGUID(&IID_IWebBrowser2, riid)) {
56 TRACE("(%p)->(IID_IWebBrowser2 %p)\n", This, ppv);
57 *ppv = WEBBROWSER(This);
58 }else if(IsEqualGUID(&IID_IOleObject, riid)) {
59 TRACE("(%p)->(IID_IOleObject %p)\n", This, ppv);
61 }else if(IsEqualGUID(&IID_IOleWindow, riid)) {
62 TRACE("(%p)->(IID_IOleWindow %p)\n", This, ppv);
63 *ppv = INPLACEOBJ(This);
64 }else if(IsEqualGUID (&IID_IOleInPlaceObject, riid)) {
65 TRACE("(%p)->(IID_IOleInPlaceObject %p)\n", This, ppv);
66 *ppv = INPLACEOBJ(This);
67 }else if(IsEqualGUID(&IID_IOleControl, riid)) {
68 TRACE("(%p)->(IID_IOleControl %p)\n", This, ppv);
70 }else if(IsEqualGUID(&IID_IPersist, riid)) {
71 TRACE("(%p)->(IID_IPersist %p)\n", This, ppv);
72 *ppv = PERSTORAGE(This);
73 }else if(IsEqualGUID(&IID_IPersistStorage, riid)) {
74 TRACE("(%p)->(IID_IPersistStorage %p)\n", This, ppv);
75 *ppv = PERSTORAGE(This);
76 }else if(IsEqualGUID (&IID_IPersistStreamInit, riid)) {
77 TRACE("(%p)->(IID_IPersistStreamInit %p)\n", This, ppv);
78 *ppv = PERSTRINIT(This);
79 }else if(IsEqualGUID(&IID_IProvideClassInfo, riid)) {
80 TRACE("(%p)->(IID_IProvideClassInfo %p)\n", This, ppv);
81 *ppv = CLASSINFO(This);
82 }else if(IsEqualGUID(&IID_IProvideClassInfo2, riid)) {
83 TRACE("(%p)->(IID_IProvideClassInfo2 %p)\n", This, ppv);
84 *ppv = CLASSINFO(This);
85 }else if(IsEqualGUID(&IID_IQuickActivate, riid)) {
86 TRACE("(%p)->(IID_IQuickActivate %p)\n", This, ppv);
87 *ppv = QUICKACT(This);
88 }else if(IsEqualGUID(&IID_IConnectionPointContainer, riid)) {
89 TRACE("(%p)->(IID_IConnectionPointContainer %p)\n", This, ppv);
90 *ppv = CONPTCONT(This);
91 }else if(IsEqualGUID(&IID_IViewObject, riid)) {
92 TRACE("(%p)->(IID_IViewObject %p)\n", This, ppv);
94 }else if(IsEqualGUID(&IID_IViewObject2, riid)) {
95 TRACE("(%p)->(IID_IViewObject2 %p)\n", This, ppv);
96 *ppv = VIEWOBJ2(This);
97 }else if(IsEqualGUID(&IID_IOleInPlaceActiveObject, riid)) {
98 TRACE("(%p)->(IID_IOleInPlaceActiveObject %p)\n", This, ppv);
99 *ppv = ACTIVEOBJ(This);
100 }else if(IsEqualGUID(&IID_IOleCommandTarget, riid)) {
101 TRACE("(%p)->(IID_IOleCommandTarget %p)\n", This, ppv);
102 *ppv = WBOLECMD(This);
106 IUnknown_AddRef((IUnknown*)*ppv);
110 FIXME("(%p)->(%s %p) interface not supported\n", This, debugstr_guid(riid), ppv);
111 return E_NOINTERFACE;
114 static ULONG WINAPI WebBrowser_AddRef(IWebBrowser2 *iface)
116 WebBrowser *This = WEBBROWSER_THIS(iface);
117 LONG ref = InterlockedIncrement(&This->ref);
118 TRACE("(%p) ref=%ld\n", This, ref);
122 static ULONG WINAPI WebBrowser_Release(IWebBrowser2 *iface)
124 WebBrowser *This = WEBBROWSER_THIS(iface);
125 LONG ref = InterlockedDecrement(&This->ref);
127 TRACE("(%p) ref=%ld\n", This, ref);
131 IUnknown_Release(This->document);
133 WebBrowser_OleObject_Destroy(This);
134 WebBrowser_Events_Destroy(This);
135 WebBrowser_ClientSite_Destroy(This);
137 SysFreeString(This->url);
138 HeapFree(GetProcessHeap(), 0, This);
139 SHDOCVW_UnlockModule();
145 /* IDispatch methods */
146 static HRESULT WINAPI WebBrowser_GetTypeInfoCount(IWebBrowser2 *iface, UINT *pctinfo)
148 WebBrowser *This = WEBBROWSER_THIS(iface);
149 FIXME("(%p)->(%p)\n", This, pctinfo);
153 static HRESULT WINAPI WebBrowser_GetTypeInfo(IWebBrowser2 *iface, UINT iTInfo, LCID lcid,
156 WebBrowser *This = WEBBROWSER_THIS(iface);
157 FIXME("(%p)->(%d %ld %p)\n", This, iTInfo, lcid, ppTInfo);
161 static HRESULT WINAPI WebBrowser_GetIDsOfNames(IWebBrowser2 *iface, REFIID riid,
162 LPOLESTR *rgszNames, UINT cNames,
163 LCID lcid, DISPID *rgDispId)
165 WebBrowser *This = WEBBROWSER_THIS(iface);
166 FIXME("(%p)->(%s %p %d %ld %p)\n", This, debugstr_guid(riid), rgszNames, cNames,
171 static HRESULT WINAPI WebBrowser_Invoke(IWebBrowser2 *iface, DISPID dispIdMember,
172 REFIID riid, LCID lcid, WORD wFlags,
173 DISPPARAMS *pDispParams, VARIANT *pVarResult,
174 EXCEPINFO *pExepInfo, UINT *puArgErr)
176 WebBrowser *This = WEBBROWSER_THIS(iface);
177 FIXME("(%p)->(%ld %s %ld %08x %p %p %p %p)\n", This, dispIdMember, debugstr_guid(riid),
178 lcid, wFlags, pDispParams, pVarResult, pExepInfo, puArgErr);
182 /* IWebBrowser methods */
183 static HRESULT WINAPI WebBrowser_GoBack(IWebBrowser2 *iface)
185 WebBrowser *This = WEBBROWSER_THIS(iface);
186 FIXME("(%p)\n", This);
190 static HRESULT WINAPI WebBrowser_GoForward(IWebBrowser2 *iface)
192 WebBrowser *This = WEBBROWSER_THIS(iface);
193 FIXME("(%p)\n", This);
197 static HRESULT WINAPI WebBrowser_GoHome(IWebBrowser2 *iface)
199 WebBrowser *This = WEBBROWSER_THIS(iface);
200 FIXME("(%p)\n", This);
204 static HRESULT WINAPI WebBrowser_GoSearch(IWebBrowser2 *iface)
206 WebBrowser *This = WEBBROWSER_THIS(iface);
207 FIXME("(%p)\n", This);
211 static HRESULT WINAPI WebBrowser_Navigate(IWebBrowser2 *iface, BSTR URL,
212 VARIANT *Flags, VARIANT *TargetFrameName,
213 VARIANT *PostData, VARIANT *Headers)
215 WebBrowser *This = WEBBROWSER_THIS(iface);
216 FIXME("(%p)->(%s %p %p %p %p)\n", This, debugstr_w(URL), Flags, TargetFrameName,
221 static HRESULT WINAPI WebBrowser_Refresh(IWebBrowser2 *iface)
223 WebBrowser *This = WEBBROWSER_THIS(iface);
224 FIXME("(%p)\n", This);
228 static HRESULT WINAPI WebBrowser_Refresh2(IWebBrowser2 *iface, VARIANT *Level)
230 WebBrowser *This = WEBBROWSER_THIS(iface);
231 FIXME("(%p)->(%p)\n", This, Level);
235 static HRESULT WINAPI WebBrowser_Stop(IWebBrowser2 *iface)
237 WebBrowser *This = WEBBROWSER_THIS(iface);
238 FIXME("(%p)\n", This);
242 static HRESULT WINAPI WebBrowser_get_Application(IWebBrowser2 *iface, IDispatch **ppDisp)
244 WebBrowser *This = WEBBROWSER_THIS(iface);
245 FIXME("(%p)->(%p)\n", This, ppDisp);
249 static HRESULT WINAPI WebBrowser_get_Parent(IWebBrowser2 *iface, IDispatch **ppDisp)
251 WebBrowser *This = WEBBROWSER_THIS(iface);
252 FIXME("(%p)->(%p)\n", This, ppDisp);
256 static HRESULT WINAPI WebBrowser_get_Container(IWebBrowser2 *iface, IDispatch **ppDisp)
258 WebBrowser *This = WEBBROWSER_THIS(iface);
259 FIXME("(%p)->(%p)\n", This, ppDisp);
263 static HRESULT WINAPI WebBrowser_get_Document(IWebBrowser2 *iface, IDispatch **ppDisp)
265 WebBrowser *This = WEBBROWSER_THIS(iface);
267 TRACE("(%p)->(%p)\n", This, ppDisp);
271 IUnknown_QueryInterface(This->document, &IID_IDispatch, (void**)ppDisp);
276 static HRESULT WINAPI WebBrowser_get_TopLevelContainer(IWebBrowser2 *iface, VARIANT_BOOL *pBool)
278 WebBrowser *This = WEBBROWSER_THIS(iface);
279 FIXME("(%p)->(%p)\n", This, pBool);
283 static HRESULT WINAPI WebBrowser_get_Type(IWebBrowser2 *iface, BSTR *Type)
285 WebBrowser *This = WEBBROWSER_THIS(iface);
286 FIXME("(%p)->(%p)\n", This, Type);
290 static HRESULT WINAPI WebBrowser_get_Left(IWebBrowser2 *iface, long *pl)
292 WebBrowser *This = WEBBROWSER_THIS(iface);
293 FIXME("(%p)->(%p)\n", This, pl);
297 static HRESULT WINAPI WebBrowser_put_Left(IWebBrowser2 *iface, long Left)
299 WebBrowser *This = WEBBROWSER_THIS(iface);
300 FIXME("(%p)->(%ld)\n", This, Left);
304 static HRESULT WINAPI WebBrowser_get_Top(IWebBrowser2 *iface, long *pl)
306 WebBrowser *This = WEBBROWSER_THIS(iface);
307 FIXME("(%p)->(%p)\n", This, pl);
311 static HRESULT WINAPI WebBrowser_put_Top(IWebBrowser2 *iface, long Top)
313 WebBrowser *This = WEBBROWSER_THIS(iface);
314 FIXME("(%p)->(%ld)\n", This, Top);
318 static HRESULT WINAPI WebBrowser_get_Width(IWebBrowser2 *iface, long *pl)
320 WebBrowser *This = WEBBROWSER_THIS(iface);
321 FIXME("(%p)->(%p)\n", This, pl);
325 static HRESULT WINAPI WebBrowser_put_Width(IWebBrowser2 *iface, long Width)
327 WebBrowser *This = WEBBROWSER_THIS(iface);
328 FIXME("(%p)->(%ld)\n", This, Width);
332 static HRESULT WINAPI WebBrowser_get_Height(IWebBrowser2 *iface, long *pl)
334 WebBrowser *This = WEBBROWSER_THIS(iface);
335 FIXME("(%p)->(%p)\n", This, pl);
339 static HRESULT WINAPI WebBrowser_put_Height(IWebBrowser2 *iface, long Height)
341 WebBrowser *This = WEBBROWSER_THIS(iface);
342 FIXME("(%p)->(%ld)\n", This, Height);
346 static HRESULT WINAPI WebBrowser_get_LocationName(IWebBrowser2 *iface, BSTR *LocationName)
348 WebBrowser *This = WEBBROWSER_THIS(iface);
349 FIXME("(%p)->(%p)\n", This, LocationName);
353 static HRESULT WINAPI WebBrowser_get_LocationURL(IWebBrowser2 *iface, BSTR *LocationURL)
355 WebBrowser *This = WEBBROWSER_THIS(iface);
356 FIXME("(%p)->(%p)\n", This, LocationURL);
360 static HRESULT WINAPI WebBrowser_get_Busy(IWebBrowser2 *iface, VARIANT_BOOL *pBool)
362 WebBrowser *This = WEBBROWSER_THIS(iface);
363 FIXME("(%p)->(%p)\n", This, pBool);
367 static HRESULT WINAPI WebBrowser_Quit(IWebBrowser2 *iface)
369 WebBrowser *This = WEBBROWSER_THIS(iface);
370 FIXME("(%p)\n", This);
374 static HRESULT WINAPI WebBrowser_ClientToWindow(IWebBrowser2 *iface, int *pcx, int *pcy)
376 WebBrowser *This = WEBBROWSER_THIS(iface);
377 FIXME("(%p)->(%p %p)\n", This, pcx, pcy);
381 static HRESULT WINAPI WebBrowser_PutProperty(IWebBrowser2 *iface, BSTR szProperty, VARIANT vtValue)
383 WebBrowser *This = WEBBROWSER_THIS(iface);
384 FIXME("(%p)->(%s)\n", This, debugstr_w(szProperty));
388 static HRESULT WINAPI WebBrowser_GetProperty(IWebBrowser2 *iface, BSTR szProperty, VARIANT *pvtValue)
390 WebBrowser *This = WEBBROWSER_THIS(iface);
391 FIXME("(%p)->(%s %p)\n", This, debugstr_w(szProperty), pvtValue);
395 static HRESULT WINAPI WebBrowser_get_Name(IWebBrowser2 *iface, BSTR *Name)
397 WebBrowser *This = WEBBROWSER_THIS(iface);
398 FIXME("(%p)->(%p)\n", This, Name);
402 static HRESULT WINAPI WebBrowser_get_HWND(IWebBrowser2 *iface, long *pHWND)
404 WebBrowser *This = WEBBROWSER_THIS(iface);
405 FIXME("(%p)->(%p)\n", This, pHWND);
409 static HRESULT WINAPI WebBrowser_get_FullName(IWebBrowser2 *iface, BSTR *FullName)
411 WebBrowser *This = WEBBROWSER_THIS(iface);
412 FIXME("(%p)->(%p)\n", This, FullName);
416 static HRESULT WINAPI WebBrowser_get_Path(IWebBrowser2 *iface, BSTR *Path)
418 WebBrowser *This = WEBBROWSER_THIS(iface);
419 FIXME("(%p)->(%p)\n", This, Path);
423 static HRESULT WINAPI WebBrowser_get_Visible(IWebBrowser2 *iface, VARIANT_BOOL *pBool)
425 WebBrowser *This = WEBBROWSER_THIS(iface);
426 FIXME("(%p)->(%p)\n", This, pBool);
430 static HRESULT WINAPI WebBrowser_put_Visible(IWebBrowser2 *iface, VARIANT_BOOL Value)
432 WebBrowser *This = WEBBROWSER_THIS(iface);
433 FIXME("(%p)->(%x)\n", This, Value);
437 static HRESULT WINAPI WebBrowser_get_StatusBar(IWebBrowser2 *iface, VARIANT_BOOL *pBool)
439 WebBrowser *This = WEBBROWSER_THIS(iface);
440 FIXME("(%p)->(%p)\n", This, pBool);
444 static HRESULT WINAPI WebBrowser_put_StatusBar(IWebBrowser2 *iface, VARIANT_BOOL Value)
446 WebBrowser *This = WEBBROWSER_THIS(iface);
447 FIXME("(%p)->(%x)\n", This, Value);
451 static HRESULT WINAPI WebBrowser_get_StatusText(IWebBrowser2 *iface, BSTR *StatusText)
453 WebBrowser *This = WEBBROWSER_THIS(iface);
454 FIXME("(%p)->(%p)\n", This, StatusText);
458 static HRESULT WINAPI WebBrowser_put_StatusText(IWebBrowser2 *iface, BSTR StatusText)
460 WebBrowser *This = WEBBROWSER_THIS(iface);
461 FIXME("(%p)->(%s)\n", This, debugstr_w(StatusText));
465 static HRESULT WINAPI WebBrowser_get_ToolBar(IWebBrowser2 *iface, int *Value)
467 WebBrowser *This = WEBBROWSER_THIS(iface);
468 FIXME("(%p)->(%p)\n", This, Value);
472 static HRESULT WINAPI WebBrowser_put_ToolBar(IWebBrowser2 *iface, int Value)
474 WebBrowser *This = WEBBROWSER_THIS(iface);
475 FIXME("(%p)->(%d)\n", This, Value);
479 static HRESULT WINAPI WebBrowser_get_MenuBar(IWebBrowser2 *iface, VARIANT_BOOL *Value)
481 WebBrowser *This = WEBBROWSER_THIS(iface);
482 FIXME("(%p)->(%p)\n", This, Value);
486 static HRESULT WINAPI WebBrowser_put_MenuBar(IWebBrowser2 *iface, VARIANT_BOOL Value)
488 WebBrowser *This = WEBBROWSER_THIS(iface);
489 FIXME("(%p)->(%x)\n", This, Value);
493 static HRESULT WINAPI WebBrowser_get_FullScreen(IWebBrowser2 *iface, VARIANT_BOOL *pbFullScreen)
495 WebBrowser *This = WEBBROWSER_THIS(iface);
496 FIXME("(%p)->(%p)\n", This, pbFullScreen);
500 static HRESULT WINAPI WebBrowser_put_FullScreen(IWebBrowser2 *iface, VARIANT_BOOL bFullScreen)
502 WebBrowser *This = WEBBROWSER_THIS(iface);
503 FIXME("(%p)->(%x)\n", This, bFullScreen);
507 static HRESULT WINAPI WebBrowser_Navigate2(IWebBrowser2 *iface, VARIANT *URL, VARIANT *Flags,
508 VARIANT *TargetFrameName, VARIANT *PostData, VARIANT *Headers)
510 WebBrowser *This = WEBBROWSER_THIS(iface);
511 IPersistMoniker *persist;
516 TRACE("(%p)->(%p %p %p %p %p)\n", This, URL, Flags, TargetFrameName, PostData, Headers);
521 if((Flags && V_VT(Flags) != VT_EMPTY)
522 || (TargetFrameName && V_VT(TargetFrameName) != VT_EMPTY)
523 || (PostData && V_VT(PostData) != VT_EMPTY)
524 || (Headers && V_VT(Headers) != VT_EMPTY))
525 FIXME("Unsupported arguments\n");
529 if(V_VT(URL) != VT_BSTR)
532 if(!This->doc_view_hwnd)
533 create_doc_view_hwnd(This);
537 * We should use URLMoniker's BindToObject instead creating HTMLDocument here.
538 * This should be fixed when mshtml.dll and urlmon.dll will be good enough.
541 if(!This->document) {
542 hres = CoCreateInstance(&CLSID_HTMLDocument, NULL,
543 CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER,
544 &IID_IUnknown, (void**)&This->document);
549 hres = IUnknown_QueryInterface(This->document, &IID_IPersistMoniker, (void**)&persist);
553 hres = CreateURLMoniker(NULL, V_BSTR(URL), &mon);
555 IPersistMoniker_Release(persist);
559 hres = IPersistMoniker_Load(persist, FALSE, mon, NULL /* FIXME */, 0);
560 IMoniker_Release(mon);
561 IPersistMoniker_Release(persist);
563 WARN("Load failed: %08lx\n", hres);
567 This->url = SysAllocString(V_BSTR(URL));
569 hres = IUnknown_QueryInterface(This->document, &IID_IOleObject, (void**)&oleobj);
573 hres = IOleObject_SetClientSite(oleobj, CLIENTSITE(This));
574 IOleObject_Release(oleobj);
576 PostMessageW(This->doc_view_hwnd, WB_WM_NAVIGATE2, 0, 0);
581 static HRESULT WINAPI WebBrowser_QueryStatusWB(IWebBrowser2 *iface, OLECMDID cmdID, OLECMDF *pcmdf)
583 WebBrowser *This = WEBBROWSER_THIS(iface);
584 FIXME("(%p)->(%d %p)\n", This, cmdID, pcmdf);
588 static HRESULT WINAPI WebBrowser_ExecWB(IWebBrowser2 *iface, OLECMDID cmdID,
589 OLECMDEXECOPT cmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
591 WebBrowser *This = WEBBROWSER_THIS(iface);
592 FIXME("(%p)->(%d %d %p %p)\n", This, cmdID, cmdexecopt, pvaIn, pvaOut);
596 static HRESULT WINAPI WebBrowser_ShowBrowserBar(IWebBrowser2 *iface, VARIANT *pvaClsid,
597 VARIANT *pvarShow, VARIANT *pvarSize)
599 WebBrowser *This = WEBBROWSER_THIS(iface);
600 FIXME("(%p)->(%p %p %p)\n", This, pvaClsid, pvarShow, pvarSize);
604 static HRESULT WINAPI WebBrowser_get_ReadyState(IWebBrowser2 *iface, READYSTATE *lpReadyState)
606 WebBrowser *This = WEBBROWSER_THIS(iface);
607 FIXME("(%p)->(%p)\n", This, lpReadyState);
611 static HRESULT WINAPI WebBrowser_get_Offline(IWebBrowser2 *iface, VARIANT_BOOL *pbOffline)
613 WebBrowser *This = WEBBROWSER_THIS(iface);
614 FIXME("(%p)->(%p)\n", This, pbOffline);
618 static HRESULT WINAPI WebBrowser_put_Offline(IWebBrowser2 *iface, VARIANT_BOOL bOffline)
620 WebBrowser *This = WEBBROWSER_THIS(iface);
621 FIXME("(%p)->(%x)\n", This, bOffline);
625 static HRESULT WINAPI WebBrowser_get_Silent(IWebBrowser2 *iface, VARIANT_BOOL *pbSilent)
627 WebBrowser *This = WEBBROWSER_THIS(iface);
628 FIXME("(%p)->(%p)\n", This, pbSilent);
632 static HRESULT WINAPI WebBrowser_put_Silent(IWebBrowser2 *iface, VARIANT_BOOL bSilent)
634 WebBrowser *This = WEBBROWSER_THIS(iface);
635 FIXME("(%p)->(%x)\n", This, bSilent);
639 static HRESULT WINAPI WebBrowser_get_RegisterAsBrowser(IWebBrowser2 *iface,
640 VARIANT_BOOL *pbRegister)
642 WebBrowser *This = WEBBROWSER_THIS(iface);
643 FIXME("(%p)->(%p)\n", This, pbRegister);
647 static HRESULT WINAPI WebBrowser_put_RegisterAsBrowser(IWebBrowser2 *iface,
648 VARIANT_BOOL bRegister)
650 WebBrowser *This = WEBBROWSER_THIS(iface);
651 FIXME("(%p)->(%x)\n", This, bRegister);
655 static HRESULT WINAPI WebBrowser_get_RegisterAsDropTarget(IWebBrowser2 *iface,
656 VARIANT_BOOL *pbRegister)
658 WebBrowser *This = WEBBROWSER_THIS(iface);
659 FIXME("(%p)->(%p)\n", This, pbRegister);
663 static HRESULT WINAPI WebBrowser_put_RegisterAsDropTarget(IWebBrowser2 *iface,
664 VARIANT_BOOL bRegister)
666 WebBrowser *This = WEBBROWSER_THIS(iface);
667 FIXME("(%p)->(%x)\n", This, bRegister);
671 static HRESULT WINAPI WebBrowser_get_TheaterMode(IWebBrowser2 *iface, VARIANT_BOOL *pbRegister)
673 WebBrowser *This = WEBBROWSER_THIS(iface);
674 FIXME("(%p)->(%p)\n", This, pbRegister);
678 static HRESULT WINAPI WebBrowser_put_TheaterMode(IWebBrowser2 *iface, VARIANT_BOOL bRegister)
680 WebBrowser *This = WEBBROWSER_THIS(iface);
681 FIXME("(%p)->(%x)\n", This, bRegister);
685 static HRESULT WINAPI WebBrowser_get_AddressBar(IWebBrowser2 *iface, VARIANT_BOOL *Value)
687 WebBrowser *This = WEBBROWSER_THIS(iface);
688 FIXME("(%p)->(%p)\n", This, Value);
692 static HRESULT WINAPI WebBrowser_put_AddressBar(IWebBrowser2 *iface, VARIANT_BOOL Value)
694 WebBrowser *This = WEBBROWSER_THIS(iface);
695 FIXME("(%p)->(%x)\n", This, Value);
699 static HRESULT WINAPI WebBrowser_get_Resizable(IWebBrowser2 *iface, VARIANT_BOOL *Value)
701 WebBrowser *This = WEBBROWSER_THIS(iface);
702 FIXME("(%p)->(%p)\n", This, Value);
706 static HRESULT WINAPI WebBrowser_put_Resizable(IWebBrowser2 *iface, VARIANT_BOOL Value)
708 WebBrowser *This = WEBBROWSER_THIS(iface);
709 FIXME("(%p)->(%x)\n", This, Value);
713 #undef WEBBROWSER_THIS
715 static const IWebBrowser2Vtbl WebBrowser2Vtbl =
717 WebBrowser_QueryInterface,
720 WebBrowser_GetTypeInfoCount,
721 WebBrowser_GetTypeInfo,
722 WebBrowser_GetIDsOfNames,
725 WebBrowser_GoForward,
732 WebBrowser_get_Application,
733 WebBrowser_get_Parent,
734 WebBrowser_get_Container,
735 WebBrowser_get_Document,
736 WebBrowser_get_TopLevelContainer,
742 WebBrowser_get_Width,
743 WebBrowser_put_Width,
744 WebBrowser_get_Height,
745 WebBrowser_put_Height,
746 WebBrowser_get_LocationName,
747 WebBrowser_get_LocationURL,
750 WebBrowser_ClientToWindow,
751 WebBrowser_PutProperty,
752 WebBrowser_GetProperty,
755 WebBrowser_get_FullName,
757 WebBrowser_get_Visible,
758 WebBrowser_put_Visible,
759 WebBrowser_get_StatusBar,
760 WebBrowser_put_StatusBar,
761 WebBrowser_get_StatusText,
762 WebBrowser_put_StatusText,
763 WebBrowser_get_ToolBar,
764 WebBrowser_put_ToolBar,
765 WebBrowser_get_MenuBar,
766 WebBrowser_put_MenuBar,
767 WebBrowser_get_FullScreen,
768 WebBrowser_put_FullScreen,
769 WebBrowser_Navigate2,
770 WebBrowser_QueryStatusWB,
772 WebBrowser_ShowBrowserBar,
773 WebBrowser_get_ReadyState,
774 WebBrowser_get_Offline,
775 WebBrowser_put_Offline,
776 WebBrowser_get_Silent,
777 WebBrowser_put_Silent,
778 WebBrowser_get_RegisterAsBrowser,
779 WebBrowser_put_RegisterAsBrowser,
780 WebBrowser_get_RegisterAsDropTarget,
781 WebBrowser_put_RegisterAsDropTarget,
782 WebBrowser_get_TheaterMode,
783 WebBrowser_put_TheaterMode,
784 WebBrowser_get_AddressBar,
785 WebBrowser_put_AddressBar,
786 WebBrowser_get_Resizable,
787 WebBrowser_put_Resizable
790 HRESULT WebBrowser_Create(IUnknown *pOuter, REFIID riid, void **ppv)
795 TRACE("(%p %s %p)\n", pOuter, debugstr_guid(riid), ppv);
797 ret = HeapAlloc(GetProcessHeap(), 0, sizeof(WebBrowser));
799 ret->lpWebBrowser2Vtbl = &WebBrowser2Vtbl;
802 ret->document = NULL;
805 WebBrowser_OleObject_Init(ret);
806 WebBrowser_ViewObject_Init(ret);
807 WebBrowser_Persist_Init(ret);
808 WebBrowser_ClassInfo_Init(ret);
809 WebBrowser_Misc_Init(ret);
810 WebBrowser_Events_Init(ret);
811 WebBrowser_ClientSite_Init(ret);
812 WebBrowser_DocHost_Init(ret);
813 WebBrowser_Frame_Init(ret);
815 hres = IWebBrowser_QueryInterface(WEBBROWSER(ret), riid, ppv);
816 if(SUCCEEDED(hres)) {
817 SHDOCVW_LockModule();
819 HeapFree(GetProcessHeap(), 0, ret);