Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers...
[reactos.git] / reactos / dll / win32 / ieframe / shellbrowser.c
diff --git a/reactos/dll/win32/ieframe/shellbrowser.c b/reactos/dll/win32/ieframe/shellbrowser.c
deleted file mode 100644 (file)
index 11ce073..0000000
+++ /dev/null
@@ -1,1007 +0,0 @@
-/*
- * Implementation of IShellBrowser interface
- *
- * Copyright 2011 Piotr Caban for CodeWeavers
- * Copyright 2012 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
- */
-
-#include "ieframe.h"
-
-#include <assert.h>
-
-static inline ShellBrowser *impl_from_IShellBrowser(IShellBrowser *iface)
-{
-    return CONTAINING_RECORD(iface, ShellBrowser, IShellBrowser_iface);
-}
-
-static HRESULT WINAPI ShellBrowser_QueryInterface(IShellBrowser* iface, REFIID riid, void **ppv)
-{
-    ShellBrowser *This = impl_from_IShellBrowser(iface);
-
-    if(IsEqualGUID(&IID_IUnknown, riid)) {
-        TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
-        *ppv = &This->IShellBrowser_iface;
-    }else if(IsEqualGUID(&IID_IOleWindow, riid)) {
-        TRACE("(%p)->(IID_IOleWindow %p)\n", This, ppv);
-        *ppv = &This->IShellBrowser_iface;
-    }else if(IsEqualGUID(&IID_IShellBrowser, riid)) {
-        TRACE("(%p)->(IID_IShellBrowser %p)\n", This, ppv);
-        *ppv = &This->IShellBrowser_iface;
-    }else if(IsEqualGUID(&IID_IBrowserService, riid)) {
-        TRACE("(%p)->(IID_IBrowserService %p)\n", This, ppv);
-        *ppv = &This->IBrowserService_iface;
-    }else if(IsEqualGUID(&IID_IDocObjectService, riid)) {
-        TRACE("(%p)->(IID_IDocObjectService %p)\n", This, ppv);
-        *ppv = &This->IDocObjectService_iface;
-    }else {
-        FIXME("%p %s %p\n", This, debugstr_guid(riid), ppv);
-        *ppv = NULL;
-        return E_NOINTERFACE;
-    }
-
-    IUnknown_AddRef((IUnknown*)*ppv);
-    return S_OK;
-}
-
-static ULONG WINAPI ShellBrowser_AddRef(
-        IShellBrowser* iface)
-{
-    ShellBrowser *This = impl_from_IShellBrowser(iface);
-    LONG ref = InterlockedIncrement(&This->ref);
-
-    TRACE("(%p) ref=%d\n", This, ref);
-
-    return ref;
-}
-
-static ULONG WINAPI ShellBrowser_Release(IShellBrowser* iface)
-{
-    ShellBrowser *This = impl_from_IShellBrowser(iface);
-    LONG ref = InterlockedDecrement(&This->ref);
-
-    TRACE("(%p) ref=%d\n", This, ref);
-
-    if(!ref) {
-        assert(!This->doc_host);
-        heap_free(This);
-    }
-
-    return ref;
-}
-
-static HRESULT WINAPI ShellBrowser_GetWindow(
-        IShellBrowser* iface,
-        HWND *phwnd)
-{
-    ShellBrowser *This = impl_from_IShellBrowser(iface);
-    FIXME("%p %p\n", This, phwnd);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI ShellBrowser_ContextSensitiveHelp(
-        IShellBrowser* iface,
-        BOOL fEnterMode)
-{
-    ShellBrowser *This = impl_from_IShellBrowser(iface);
-    FIXME("%p %d\n", This, fEnterMode);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI ShellBrowser_InsertMenusSB(
-        IShellBrowser* iface,
-        HMENU hmenuShared,
-        LPOLEMENUGROUPWIDTHS lpMenuWidths)
-{
-    ShellBrowser *This = impl_from_IShellBrowser(iface);
-    FIXME("%p %p %p\n", This, hmenuShared, lpMenuWidths);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI ShellBrowser_SetMenuSB(
-        IShellBrowser* iface,
-        HMENU hmenuShared,
-        HOLEMENU holemenuReserved,
-        HWND hwndActiveObject)
-{
-    ShellBrowser *This = impl_from_IShellBrowser(iface);
-    FIXME("%p %p %p %p\n", This, hmenuShared, holemenuReserved, hwndActiveObject);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI ShellBrowser_RemoveMenusSB(
-        IShellBrowser* iface,
-        HMENU hmenuShared)
-{
-    ShellBrowser *This = impl_from_IShellBrowser(iface);
-    FIXME("%p %p\n", This, hmenuShared);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI ShellBrowser_SetStatusTextSB(
-        IShellBrowser* iface,
-        LPCOLESTR pszStatusText)
-{
-    ShellBrowser *This = impl_from_IShellBrowser(iface);
-    FIXME("%p %s\n", This, debugstr_w(pszStatusText));
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI ShellBrowser_EnableModelessSB(
-        IShellBrowser* iface,
-        BOOL fEnable)
-{
-    ShellBrowser *This = impl_from_IShellBrowser(iface);
-    FIXME("%p %d\n", This, fEnable);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI ShellBrowser_TranslateAcceleratorSB(
-        IShellBrowser* iface,
-        MSG *pmsg,
-        WORD wID)
-{
-    ShellBrowser *This = impl_from_IShellBrowser(iface);
-    FIXME("%p %p %d\n", This, pmsg, (int)wID);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI ShellBrowser_BrowseObject(
-        IShellBrowser* iface,
-        LPCITEMIDLIST pidl,
-        UINT wFlags)
-{
-    ShellBrowser *This = impl_from_IShellBrowser(iface);
-    FIXME("%p %p %u\n", This, pidl, wFlags);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI ShellBrowser_GetViewStateStream(
-        IShellBrowser* iface,
-        DWORD grfMode,
-        IStream **ppStrm)
-{
-    ShellBrowser *This = impl_from_IShellBrowser(iface);
-    FIXME("%p %x %p\n", This, grfMode, ppStrm);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI ShellBrowser_GetControlWindow(
-        IShellBrowser* iface,
-        UINT id,
-        HWND *phwnd)
-{
-    ShellBrowser *This = impl_from_IShellBrowser(iface);
-    FIXME("%p %u %p\n", This, id, phwnd);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI ShellBrowser_SendControlMsg(
-        IShellBrowser* iface,
-        UINT id,
-        UINT uMsg,
-        WPARAM wParam,
-        LPARAM lParam,
-        LRESULT *pret)
-{
-    ShellBrowser *This = impl_from_IShellBrowser(iface);
-    FIXME("%p %u %u %p\n", This, id, uMsg, pret);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI ShellBrowser_QueryActiveShellView(
-        IShellBrowser* iface,
-        IShellView **ppshv)
-{
-    ShellBrowser *This = impl_from_IShellBrowser(iface);
-    FIXME("%p %p\n", This, ppshv);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI ShellBrowser_OnViewWindowActive(
-        IShellBrowser* iface,
-        IShellView *pshv)
-{
-    ShellBrowser *This = impl_from_IShellBrowser(iface);
-    FIXME("%p %p\n", This, pshv);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI ShellBrowser_SetToolbarItems(
-        IShellBrowser* iface,
-        LPTBBUTTONSB lpButtons,
-        UINT nButtons,
-        UINT uFlags)
-{
-    ShellBrowser *This = impl_from_IShellBrowser(iface);
-    FIXME("%p %p %u %u\n", This, lpButtons, nButtons, uFlags);
-    return E_NOTIMPL;
-}
-
-static const IShellBrowserVtbl ShellBrowserVtbl = {
-    ShellBrowser_QueryInterface,
-    ShellBrowser_AddRef,
-    ShellBrowser_Release,
-    ShellBrowser_GetWindow,
-    ShellBrowser_ContextSensitiveHelp,
-    ShellBrowser_InsertMenusSB,
-    ShellBrowser_SetMenuSB,
-    ShellBrowser_RemoveMenusSB,
-    ShellBrowser_SetStatusTextSB,
-    ShellBrowser_EnableModelessSB,
-    ShellBrowser_TranslateAcceleratorSB,
-    ShellBrowser_BrowseObject,
-    ShellBrowser_GetViewStateStream,
-    ShellBrowser_GetControlWindow,
-    ShellBrowser_SendControlMsg,
-    ShellBrowser_QueryActiveShellView,
-    ShellBrowser_OnViewWindowActive,
-    ShellBrowser_SetToolbarItems
-};
-
-static inline ShellBrowser *impl_from_IBrowserService(IBrowserService *iface)
-{
-    return CONTAINING_RECORD(iface, ShellBrowser, IBrowserService_iface);
-}
-
-static HRESULT WINAPI BrowserService_QueryInterface(
-        IBrowserService* iface,
-        REFIID riid,
-        void **ppvObject)
-{
-    ShellBrowser *This = impl_from_IBrowserService(iface);
-    return IShellBrowser_QueryInterface(&This->IShellBrowser_iface, riid, ppvObject);
-}
-
-static ULONG WINAPI BrowserService_AddRef(
-        IBrowserService *iface)
-{
-    ShellBrowser *This = impl_from_IBrowserService(iface);
-    return IShellBrowser_AddRef(&This->IShellBrowser_iface);
-}
-
-static ULONG WINAPI BrowserService_Release(
-        IBrowserService* iface)
-{
-    ShellBrowser *This = impl_from_IBrowserService(iface);
-    return IShellBrowser_Release(&This->IShellBrowser_iface);
-}
-
-static HRESULT WINAPI BrowserService_GetParentSite(
-        IBrowserService* iface,
-        IOleInPlaceSite **ppipsite)
-{
-    ShellBrowser *This = impl_from_IBrowserService(iface);
-    FIXME("%p %p\n", This, ppipsite);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI BrowserService_SetTitle(
-        IBrowserService* iface,
-        IShellView *psv,
-        LPCWSTR pszName)
-{
-    ShellBrowser *This = impl_from_IBrowserService(iface);
-    FIXME("%p %p %s\n", This, psv, debugstr_w(pszName));
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI BrowserService_GetTitle(
-        IBrowserService* iface,
-        IShellView *psv,
-        LPWSTR pszName,
-        DWORD cchName)
-{
-    ShellBrowser *This = impl_from_IBrowserService(iface);
-    FIXME("%p %p %p %d\n", This, psv, pszName, cchName);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI BrowserService_GetOleObject(
-        IBrowserService* iface,
-        IOleObject **ppobjv)
-{
-    ShellBrowser *This = impl_from_IBrowserService(iface);
-    FIXME("%p %p\n", This, ppobjv);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI BrowserService_GetTravelLog(
-        IBrowserService* iface,
-        ITravelLog **pptl)
-{
-    ShellBrowser *This = impl_from_IBrowserService(iface);
-    FIXME("%p %p\n", This, pptl);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI BrowserService_ShowControlWindow(
-        IBrowserService* iface,
-        UINT id,
-        BOOL fShow)
-{
-    ShellBrowser *This = impl_from_IBrowserService(iface);
-    FIXME("%p %u %d\n", This, id, fShow);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI BrowserService_IsControlWindowShown(
-        IBrowserService* iface,
-        UINT id,
-        BOOL *pfShown)
-{
-    ShellBrowser *This = impl_from_IBrowserService(iface);
-    FIXME("%p %u %p\n", This, id, pfShown);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI BrowserService_IEGetDisplayName(
-        IBrowserService* iface,
-        PCIDLIST_ABSOLUTE pidl,
-        LPWSTR pwszName,
-        UINT uFlags)
-{
-    ShellBrowser *This = impl_from_IBrowserService(iface);
-    FIXME("%p %p %p %u\n", This, pidl, pwszName, uFlags);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI BrowserService_IEParseDisplayName(
-        IBrowserService* iface,
-        UINT uiCP,
-        LPCWSTR pwszPath,
-        PIDLIST_ABSOLUTE *ppidlOut)
-{
-    ShellBrowser *This = impl_from_IBrowserService(iface);
-    FIXME("%p %u %s %p\n", This, uiCP, debugstr_w(pwszPath), ppidlOut);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI BrowserService_DisplayParseError(
-        IBrowserService* iface,
-        HRESULT hres,
-        LPCWSTR pwszPath)
-{
-    ShellBrowser *This = impl_from_IBrowserService(iface);
-    FIXME("%p %x %s\n", This, hres, debugstr_w(pwszPath));
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI BrowserService_NavigateToPidl(
-        IBrowserService* iface,
-        PCIDLIST_ABSOLUTE pidl,
-        DWORD grfHLNF)
-{
-    ShellBrowser *This = impl_from_IBrowserService(iface);
-    FIXME("%p %p %d\n", This, pidl, grfHLNF);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI BrowserService_SetNavigateState(
-        IBrowserService* iface,
-        BNSTATE bnstate)
-{
-    ShellBrowser *This = impl_from_IBrowserService(iface);
-    FIXME("%p %d\n", This, bnstate);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI BrowserService_GetNavigateState(
-        IBrowserService* iface,
-        BNSTATE *pbnstate)
-{
-    ShellBrowser *This = impl_from_IBrowserService(iface);
-    FIXME("%p %p\n", This, pbnstate);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI BrowserService_NotifyRedirect(
-        IBrowserService* iface,
-        IShellView *psv,
-        PCIDLIST_ABSOLUTE pidl,
-        BOOL *pfDidBrowse)
-{
-    ShellBrowser *This = impl_from_IBrowserService(iface);
-    FIXME("%p %p %p %p\n", This, psv, pidl, pfDidBrowse);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI BrowserService_UpdateWindowList(
-        IBrowserService* iface)
-{
-    ShellBrowser *This = impl_from_IBrowserService(iface);
-    FIXME("%p\n", This);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI BrowserService_UpdateBackForwardState(
-        IBrowserService* iface)
-{
-    ShellBrowser *This = impl_from_IBrowserService(iface);
-    FIXME("%p\n", This);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI BrowserService_SetFlags(
-        IBrowserService* iface,
-        DWORD dwFlags,
-        DWORD dwFlagMask)
-{
-    ShellBrowser *This = impl_from_IBrowserService(iface);
-    FIXME("%p %x %x\n", This, dwFlags, dwFlagMask);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI BrowserService_GetFlags(
-        IBrowserService* iface,
-        DWORD *pdwFlags)
-{
-    ShellBrowser *This = impl_from_IBrowserService(iface);
-    FIXME("%p %p\n", This, pdwFlags);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI BrowserService_CanNavigateNow(
-        IBrowserService* iface)
-{
-    ShellBrowser *This = impl_from_IBrowserService(iface);
-    FIXME("%p\n", This);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI BrowserService_GetPidl(
-        IBrowserService* iface,
-        PIDLIST_ABSOLUTE *ppidl)
-{
-    ShellBrowser *This = impl_from_IBrowserService(iface);
-    FIXME("%p %p\n", This, ppidl);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI BrowserService_SetReferrer(
-        IBrowserService* iface,
-        PCIDLIST_ABSOLUTE pidl)
-{
-    ShellBrowser *This = impl_from_IBrowserService(iface);
-    FIXME("%p %p\n", This, pidl);
-    return E_NOTIMPL;
-}
-
-static DWORD WINAPI BrowserService_GetBrowserIndex(
-        IBrowserService* iface)
-{
-    ShellBrowser *This = impl_from_IBrowserService(iface);
-    FIXME("%p\n", This);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI BrowserService_GetBrowserByIndex(
-        IBrowserService* iface,
-        DWORD dwID,
-        IUnknown **ppunk)
-{
-    ShellBrowser *This = impl_from_IBrowserService(iface);
-    FIXME("%p %x %p\n", This, dwID, ppunk);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI BrowserService_GetHistoryObject(
-        IBrowserService* iface,
-        IOleObject **ppole,
-        IStream **pstm,
-        IBindCtx **ppbc)
-{
-    ShellBrowser *This = impl_from_IBrowserService(iface);
-    FIXME("%p %p %p %p\n", This, ppole, pstm, ppbc);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI BrowserService_SetHistoryObject(
-        IBrowserService* iface,
-        IOleObject *pole,
-        BOOL fIsLocalAnchor)
-{
-    ShellBrowser *This = impl_from_IBrowserService(iface);
-    FIXME("%p %p %d\n", This, pole, fIsLocalAnchor);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI BrowserService_CacheOLEServer(
-        IBrowserService* iface,
-        IOleObject *pole)
-{
-    ShellBrowser *This = impl_from_IBrowserService(iface);
-    FIXME("%p %p\n", This, pole);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI BrowserService_GetSetCodePage(
-        IBrowserService* iface,
-        VARIANT *pvarIn,
-        VARIANT *pvarOut)
-{
-    ShellBrowser *This = impl_from_IBrowserService(iface);
-    FIXME("%p %s %p\n", This, debugstr_variant(pvarIn), pvarOut);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI BrowserService_OnHttpEquiv(
-        IBrowserService* iface,
-        IShellView *psv,
-        BOOL fDone,
-        VARIANT *pvarargIn,
-        VARIANT *pvarargOut)
-{
-    ShellBrowser *This = impl_from_IBrowserService(iface);
-    FIXME("%p %p %d %s %p\n", This, psv, fDone, debugstr_variant(pvarargIn), pvarargOut);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI BrowserService_GetPalette(
-        IBrowserService* iface,
-        HPALETTE *hpal)
-{
-    ShellBrowser *This = impl_from_IBrowserService(iface);
-    FIXME("%p %p\n", This, hpal);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI BrowserService_RegisterWindow(
-        IBrowserService* iface,
-        BOOL fForceRegister,
-        int swc)
-{
-    ShellBrowser *This = impl_from_IBrowserService(iface);
-    FIXME("%p %d %d\n", This, fForceRegister, swc);
-    return E_NOTIMPL;
-}
-
-static const IBrowserServiceVtbl BrowserServiceVtbl = {
-    BrowserService_QueryInterface,
-    BrowserService_AddRef,
-    BrowserService_Release,
-    BrowserService_GetParentSite,
-    BrowserService_SetTitle,
-    BrowserService_GetTitle,
-    BrowserService_GetOleObject,
-    BrowserService_GetTravelLog,
-    BrowserService_ShowControlWindow,
-    BrowserService_IsControlWindowShown,
-    BrowserService_IEGetDisplayName,
-    BrowserService_IEParseDisplayName,
-    BrowserService_DisplayParseError,
-    BrowserService_NavigateToPidl,
-    BrowserService_SetNavigateState,
-    BrowserService_GetNavigateState,
-    BrowserService_NotifyRedirect,
-    BrowserService_UpdateWindowList,
-    BrowserService_UpdateBackForwardState,
-    BrowserService_SetFlags,
-    BrowserService_GetFlags,
-    BrowserService_CanNavigateNow,
-    BrowserService_GetPidl,
-    BrowserService_SetReferrer,
-    BrowserService_GetBrowserIndex,
-    BrowserService_GetBrowserByIndex,
-    BrowserService_GetHistoryObject,
-    BrowserService_SetHistoryObject,
-    BrowserService_CacheOLEServer,
-    BrowserService_GetSetCodePage,
-    BrowserService_OnHttpEquiv,
-    BrowserService_GetPalette,
-    BrowserService_RegisterWindow
-};
-
-static inline ShellBrowser *impl_from_IDocObjectService(IDocObjectService *iface)
-{
-    return CONTAINING_RECORD(iface, ShellBrowser, IDocObjectService_iface);
-}
-
-static HRESULT WINAPI DocObjectService_QueryInterface(
-        IDocObjectService* iface,
-        REFIID riid,
-        void **ppvObject)
-{
-    ShellBrowser *This = impl_from_IDocObjectService(iface);
-    return IShellBrowser_QueryInterface(&This->IShellBrowser_iface, riid, ppvObject);
-}
-
-static ULONG WINAPI DocObjectService_AddRef(
-        IDocObjectService* iface)
-{
-    ShellBrowser *This = impl_from_IDocObjectService(iface);
-    return IShellBrowser_AddRef(&This->IShellBrowser_iface);
-}
-
-static ULONG WINAPI DocObjectService_Release(
-        IDocObjectService* iface)
-{
-    ShellBrowser *This = impl_from_IDocObjectService(iface);
-    return IShellBrowser_Release(&This->IShellBrowser_iface);
-}
-
-static HRESULT WINAPI DocObjectService_FireBeforeNavigate2(
-        IDocObjectService* iface,
-        IDispatch *pDispatch,
-        LPCWSTR lpszUrl,
-        DWORD dwFlags,
-        LPCWSTR lpszFrameName,
-        BYTE *pPostData,
-        DWORD cbPostData,
-        LPCWSTR lpszHeaders,
-        BOOL fPlayNavSound,
-        BOOL *pfCancel)
-{
-    ShellBrowser *This = impl_from_IDocObjectService(iface);
-    VARIANT var_url, var_flags, var_frame_name, var_post_data, var_post_data2, var_headers;
-    VARIANTARG params[7];
-    DISPPARAMS dp = {params, NULL, 7, 0};
-    VARIANT_BOOL cancel = VARIANT_FALSE;
-    SAFEARRAY *post_data;
-    WCHAR file_path[MAX_PATH];
-    DWORD file_path_len = sizeof(file_path) / sizeof(*file_path);
-
-    TRACE("%p %p %s %x %s %p %d %s %d %p\n", This, pDispatch, debugstr_w(lpszUrl),
-            dwFlags, debugstr_w(lpszFrameName), pPostData, cbPostData,
-            debugstr_w(lpszHeaders), fPlayNavSound, pfCancel);
-
-    if(cbPostData) {
-        post_data = SafeArrayCreateVector(VT_UI1, 0, cbPostData);
-        if(!post_data)
-            return E_OUTOFMEMORY;
-        memcpy(post_data->pvData, pPostData, cbPostData);
-    }else {
-        post_data = NULL;
-    }
-
-    V_VT(params) = VT_BOOL|VT_BYREF;
-    V_BOOLREF(params) = &cancel;
-
-    V_VT(params+1) = (VT_BYREF|VT_VARIANT);
-    V_VARIANTREF(params+1) = &var_headers;
-    V_VT(&var_headers) = VT_BSTR;
-    V_BSTR(&var_headers) = lpszHeaders ? SysAllocString(lpszHeaders) : NULL;
-
-    V_VT(params+2) = (VT_BYREF|VT_VARIANT);
-    V_VARIANTREF(params+2) = &var_post_data2;
-    V_VT(&var_post_data2) = (VT_BYREF|VT_VARIANT);
-    V_VARIANTREF(&var_post_data2) = &var_post_data;
-
-    if(post_data) {
-        V_VT(&var_post_data) = VT_UI1|VT_ARRAY;
-        V_ARRAY(&var_post_data) = post_data;
-    }else {
-        V_VT(&var_post_data) = VT_EMPTY;
-    }
-
-    V_VT(params+3) = (VT_BYREF|VT_VARIANT);
-    V_VARIANTREF(params+3) = &var_frame_name;
-    V_VT(&var_frame_name) = VT_BSTR;
-    V_BSTR(&var_frame_name) = lpszFrameName ? SysAllocString(lpszFrameName) : NULL;
-
-    V_VT(params+4) = (VT_BYREF|VT_VARIANT);
-    V_VARIANTREF(params+4) = &var_flags;
-    V_VT(&var_flags) = VT_I4;
-    V_I4(&var_flags) = 0;
-
-    V_VT(params+5) = (VT_BYREF|VT_VARIANT);
-    V_VARIANTREF(params+5) = &var_url;
-    V_VT(&var_url) = VT_BSTR;
-    if(PathCreateFromUrlW(lpszUrl, file_path, &file_path_len, 0) == S_OK)
-        V_BSTR(&var_url) = SysAllocString(file_path);
-    else
-        V_BSTR(&var_url) = SysAllocString(lpszUrl);
-
-    V_VT(params+6) = (VT_DISPATCH);
-    V_DISPATCH(params+6) = (IDispatch*)This->doc_host->wb;
-
-    /* Keep reference to This. It may be released in event handler. */
-    IShellBrowser_AddRef(&This->IShellBrowser_iface);
-
-    TRACE(">>>\n");
-    call_sink(This->doc_host->cps.wbe2, DISPID_BEFORENAVIGATE2, &dp);
-    TRACE("<<<\n");
-
-    IShellBrowser_Release(&This->IShellBrowser_iface);
-
-    SysFreeString(V_BSTR(&var_url));
-    SysFreeString(V_BSTR(&var_headers));
-    SysFreeString(V_BSTR(&var_frame_name));
-    SafeArrayDestroy(post_data);
-
-    *pfCancel = !!cancel;
-    return S_OK;
-}
-
-static HRESULT WINAPI DocObjectService_FireNavigateComplete2(
-        IDocObjectService* iface,
-        IHTMLWindow2 *pHTMLWindow2,
-        DWORD dwFlags)
-{
-    ShellBrowser *This = impl_from_IDocObjectService(iface);
-    DocHost *doc_host = This->doc_host;
-    IHTMLPrivateWindow *priv_window;
-    VARIANTARG params[2];
-    DISPPARAMS dp = {params, NULL, 2, 0};
-    VARIANT url_var;
-    BSTR url;
-    HRESULT hres;
-
-    TRACE("%p %p %x\n", This, pHTMLWindow2, dwFlags);
-
-    update_navigation_commands(This->doc_host);
-
-    if(doc_host->travellog.loading_pos != -1) {
-        WARN("histupdate not notified\n");
-        doc_host->travellog.position = doc_host->travellog.loading_pos;
-        doc_host->travellog.loading_pos = -1;
-    }
-
-    hres = IHTMLWindow2_QueryInterface(pHTMLWindow2, &IID_IHTMLPrivateWindow, (void**)&priv_window);
-    if(FAILED(hres))
-        return hres;
-
-    hres = IHTMLPrivateWindow_GetAddressBarUrl(priv_window, &url);
-    IHTMLPrivateWindow_Release(priv_window);
-    if(FAILED(hres))
-        return hres;
-
-    TRACE("got URL %s\n", debugstr_w(url));
-    set_dochost_url(This->doc_host, url);
-
-    V_VT(params) = (VT_BYREF|VT_VARIANT);
-    V_VARIANTREF(params) = &url_var;
-
-    V_VT(params+1) = VT_DISPATCH;
-    V_DISPATCH(params+1) = (IDispatch*)doc_host->wb;
-
-    V_VT(&url_var) = VT_BSTR;
-    V_BSTR(&url_var) = url;
-
-    /* Keep reference to This. It may be released in event handler. */
-    IShellBrowser_AddRef(&This->IShellBrowser_iface);
-
-    TRACE(">>>\n");
-    call_sink(This->doc_host->cps.wbe2, DISPID_NAVIGATECOMPLETE2, &dp);
-    TRACE("<<<\n");
-
-    SysFreeString(url);
-
-    This->doc_host->busy = VARIANT_FALSE;
-    IShellBrowser_Release(&This->IShellBrowser_iface);
-    return S_OK;
-}
-
-static HRESULT WINAPI DocObjectService_FireDownloadBegin(
-        IDocObjectService* iface)
-{
-    ShellBrowser *This = impl_from_IDocObjectService(iface);
-    FIXME("%p\n", This);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI DocObjectService_FireDownloadComplete(
-        IDocObjectService* iface)
-{
-    ShellBrowser *This = impl_from_IDocObjectService(iface);
-    FIXME("%p\n", This);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI DocObjectService_FireDocumentComplete(
-        IDocObjectService* iface,
-        IHTMLWindow2 *pHTMLWindow,
-        DWORD dwFlags)
-{
-    ShellBrowser *This = impl_from_IDocObjectService(iface);
-    IHTMLPrivateWindow *priv_window;
-    VARIANTARG params[2];
-    DISPPARAMS dp = {params, NULL, 2, 0};
-    VARIANT url_var;
-    BSTR url;
-    HRESULT hres;
-
-    TRACE("%p %p %x\n", This, pHTMLWindow, dwFlags);
-
-    hres = IHTMLWindow2_QueryInterface(pHTMLWindow, &IID_IHTMLPrivateWindow, (void**)&priv_window);
-    if(FAILED(hres))
-        return hres;
-
-    hres = IHTMLPrivateWindow_GetAddressBarUrl(priv_window, &url);
-    IHTMLPrivateWindow_Release(priv_window);
-    if(FAILED(hres))
-        return hres;
-
-    TRACE("got URL %s\n", debugstr_w(url));
-
-    V_VT(params) = (VT_BYREF|VT_VARIANT);
-    V_VARIANTREF(params) = &url_var;
-
-    V_VT(params+1) = VT_DISPATCH;
-    V_DISPATCH(params+1) = (IDispatch*)This->doc_host->wb;
-
-    V_VT(&url_var) = VT_BSTR;
-    V_BSTR(&url_var) = url;
-
-    /* Keep reference to This. It may be released in event handler. */
-    IShellBrowser_AddRef(&This->IShellBrowser_iface);
-
-    TRACE(">>>\n");
-    call_sink(This->doc_host->cps.wbe2, DISPID_DOCUMENTCOMPLETE, &dp);
-    TRACE("<<<\n");
-
-    SysFreeString(url);
-    if(This->doc_host)
-        This->doc_host->busy = VARIANT_FALSE;
-
-    IShellBrowser_Release(&This->IShellBrowser_iface);
-    return S_OK;
-}
-
-static HRESULT WINAPI DocObjectService_UpdateDesktopComponent(
-        IDocObjectService* iface,
-        IHTMLWindow2 *pHTMLWindow)
-{
-    ShellBrowser *This = impl_from_IDocObjectService(iface);
-    FIXME("%p %p\n", This, pHTMLWindow);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI DocObjectService_GetPendingUrl(
-        IDocObjectService* iface,
-        BSTR *pbstrPendingUrl)
-{
-    ShellBrowser *This = impl_from_IDocObjectService(iface);
-    FIXME("%p %p\n", This, pbstrPendingUrl);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI DocObjectService_ActiveElementChanged(
-        IDocObjectService* iface,
-        IHTMLElement *pHTMLElement)
-{
-    ShellBrowser *This = impl_from_IDocObjectService(iface);
-    FIXME("%p %p\n", This, pHTMLElement);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI DocObjectService_GetUrlSearchComponent(
-        IDocObjectService* iface,
-        BSTR *pbstrSearch)
-{
-    ShellBrowser *This = impl_from_IDocObjectService(iface);
-    FIXME("%p %p\n", This, pbstrSearch);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI DocObjectService_IsErrorUrl(
-        IDocObjectService* iface,
-        LPCWSTR lpszUrl,
-        BOOL *pfIsError)
-{
-    ShellBrowser *This = impl_from_IDocObjectService(iface);
-    FIXME("%p %s %p\n", This, debugstr_w(lpszUrl), pfIsError);
-
-    *pfIsError = FALSE;
-    return S_OK;
-}
-
-static const IDocObjectServiceVtbl DocObjectServiceVtbl = {
-    DocObjectService_QueryInterface,
-    DocObjectService_AddRef,
-    DocObjectService_Release,
-    DocObjectService_FireBeforeNavigate2,
-    DocObjectService_FireNavigateComplete2,
-    DocObjectService_FireDownloadBegin,
-    DocObjectService_FireDownloadComplete,
-    DocObjectService_FireDocumentComplete,
-    DocObjectService_UpdateDesktopComponent,
-    DocObjectService_GetPendingUrl,
-    DocObjectService_ActiveElementChanged,
-    DocObjectService_GetUrlSearchComponent,
-    DocObjectService_IsErrorUrl
-};
-
-HRESULT create_browser_service(DocHost *doc_host, ShellBrowser **ret)
-{
-    ShellBrowser *sb;
-
-    sb = heap_alloc(sizeof(ShellBrowser));
-    if(!sb)
-        return E_OUTOFMEMORY;
-
-    sb->IShellBrowser_iface.lpVtbl = &ShellBrowserVtbl;
-    sb->IBrowserService_iface.lpVtbl = &BrowserServiceVtbl;
-    sb->IDocObjectService_iface.lpVtbl = &DocObjectServiceVtbl;
-
-    sb->ref = 1;
-    sb->doc_host = doc_host;
-
-    *ret = sb;
-    return S_OK;
-}
-
-void detach_browser_service(ShellBrowser *sb)
-{
-    sb->doc_host = NULL;
-    IShellBrowser_Release(&sb->IShellBrowser_iface);
-}
-
-static inline NewWindowManager *impl_from_INewWindowManager(INewWindowManager *iface)
-{
-    return CONTAINING_RECORD(iface, NewWindowManager, INewWindowManager_iface);
-}
-
-static HRESULT WINAPI NewWindowManager_QueryInterface(INewWindowManager *iface, REFIID riid, void **ppv)
-{
-    NewWindowManager *This = impl_from_INewWindowManager(iface);
-
-    if(IsEqualGUID(&IID_IUnknown, riid)) {
-        TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
-        *ppv = &This->INewWindowManager_iface;
-    }else if(IsEqualGUID(&IID_INewWindowManager, riid)) {
-        TRACE("(%p)->(IID_INewWindowManager %p)\n", This, ppv);
-        *ppv = &This->INewWindowManager_iface;
-    }else {
-        WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
-        *ppv = NULL;
-        return E_NOINTERFACE;
-    }
-
-    IUnknown_AddRef((IUnknown*)*ppv);
-    return S_OK;
-}
-
-static ULONG WINAPI NewWindowManager_AddRef(INewWindowManager *iface)
-{
-    NewWindowManager *This = impl_from_INewWindowManager(iface);
-
-    TRACE("(%p)\n", This);
-
-    return IOleClientSite_AddRef(&This->doc_host->IOleClientSite_iface);
-}
-
-static ULONG WINAPI NewWindowManager_Release(INewWindowManager *iface)
-{
-    NewWindowManager *This = impl_from_INewWindowManager(iface);
-
-    TRACE("(%p)\n", This);
-
-    return IOleClientSite_Release(&This->doc_host->IOleClientSite_iface);
-}
-
-static HRESULT WINAPI NewWindowManager_EvaluateNewWindow(INewWindowManager *iface, LPCWSTR pszUrl,
-        LPCWSTR pszName, LPCWSTR pszUrlContext, LPCWSTR pszFeatures, BOOL fReplace, DWORD dwFlags,
-        DWORD dwUserActionTime)
-{
-    NewWindowManager *This = impl_from_INewWindowManager(iface);
-    FIXME("(%p)->(%s %s %s %s %x %x %d)\n", This, debugstr_w(pszUrl), debugstr_w(pszName), debugstr_w(pszUrlContext),
-          debugstr_w(pszFeatures), fReplace, dwFlags, dwUserActionTime);
-    return S_OK;
-}
-
-static const INewWindowManagerVtbl NewWindowManagerVtbl = {
-    NewWindowManager_QueryInterface,
-    NewWindowManager_AddRef,
-    NewWindowManager_Release,
-    NewWindowManager_EvaluateNewWindow
-};
-
-void NewWindowManager_Init(DocHost *doc_host)
-{
-    doc_host->nwm.INewWindowManager_iface.lpVtbl = &NewWindowManagerVtbl;
-    doc_host->nwm.doc_host = doc_host;
-}