Author: akhaldi Date: Thu Sep 19 18:48:34 2013 New Revision: 60215
URL: http://svn.reactos.org/svn/reactos?rev=60215&view=rev Log: [IEFRAME] * Sync with Wine 1.7.1. CORE-7469
Added: trunk/reactos/dll/win32/ieframe/ieframe_v1.tlb.rgs (with props) Modified: trunk/reactos/dll/win32/ieframe/dochost.c trunk/reactos/dll/win32/ieframe/events.c trunk/reactos/dll/win32/ieframe/ie.c trunk/reactos/dll/win32/ieframe/ieframe.h trunk/reactos/dll/win32/ieframe/ieframe.rc trunk/reactos/dll/win32/ieframe/ieframe_main.c trunk/reactos/dll/win32/ieframe/ieframe_v1.rgs trunk/reactos/dll/win32/ieframe/iexplore.c trunk/reactos/dll/win32/ieframe/navigate.c trunk/reactos/dll/win32/ieframe/shellbrowser.c trunk/reactos/dll/win32/ieframe/webbrowser.c trunk/reactos/media/doc/README.WINE
Modified: trunk/reactos/dll/win32/ieframe/dochost.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ieframe/dochost.c... ============================================================================== --- trunk/reactos/dll/win32/ieframe/dochost.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ieframe/dochost.c [iso-8859-1] Thu Sep 19 18:48:34 2013 @@ -20,6 +20,7 @@
#include <exdispid.h> //#include "mshtml.h" +#include <perhist.h> #include <initguid.h>
#include <wine/debug.h> @@ -120,15 +121,29 @@ }
hres = IUnknown_QueryInterface(This->document, &IID_IHlinkTarget, (void**)&hlink); - if(FAILED(hres)) { - FIXME("Could not get IHlinkTarget interface\n"); - return; - } - - hres = IHlinkTarget_Navigate(hlink, 0, NULL); - IHlinkTarget_Release(hlink); - if(FAILED(hres)) - FIXME("Navigate failed\n"); + if(SUCCEEDED(hres)) { + hres = IHlinkTarget_Navigate(hlink, 0, NULL); + IHlinkTarget_Release(hlink); + if(FAILED(hres)) + FIXME("Navigate failed\n"); + }else { + IOleObject *ole_object; + RECT rect; + + TRACE("No IHlink iface\n"); + + hres = IUnknown_QueryInterface(This->document, &IID_IOleObject, (void**)&ole_object); + if(FAILED(hres)) { + FIXME("Could not get IOleObject iface: %08x\n", hres); + return; + } + + GetClientRect(This->hwnd, &rect); + hres = IOleObject_DoVerb(ole_object, OLEIVERB_SHOW, NULL, &This->IOleClientSite_iface, -1, This->hwnd, &rect); + IOleObject_Release(ole_object); + if(FAILED(hres)) + FIXME("DoVerb failed: %08x\n", hres); + } }
static HRESULT get_doc_ready_state(DocHost *This, READYSTATE *ret) @@ -195,6 +210,12 @@
static void update_ready_state(DocHost *This, READYSTATE ready_state) { + if(ready_state > READYSTATE_LOADING && This->travellog.loading_pos != -1) { + WARN("histupdate not notified\n"); + This->travellog.position = This->travellog.loading_pos; + This->travellog.loading_pos = -1; + } + if(ready_state > READYSTATE_LOADING && This->doc_state <= READYSTATE_LOADING && !This->browser_service /* FIXME */) notif_complete(This, DISPID_NAVIGATECOMPLETE2);
@@ -289,6 +310,10 @@ push_ready_state_task(This, READYSTATE_COMPLETE); if(ready_state != READYSTATE_COMPLETE || This->doc_navigate) advise_prop_notif(This, TRUE); + }else if(!This->doc_navigate) { + /* If we can't get document's ready state, there is not much we can do. + * Assume that document is complete at this point. */ + push_ready_state_task(This, READYSTATE_COMPLETE); }
return S_OK; @@ -327,37 +352,91 @@ return DefWindowProcW(hwnd, msg, wParam, lParam); }
+static void free_travellog_entry(travellog_entry_t *entry) +{ + if(entry->stream) + IStream_Release(entry->stream); + heap_free(entry->url); +} + +static IStream *get_travellog_stream(DocHost *This) +{ + IPersistHistory *persist_history; + IStream *stream; + HRESULT hres; + + hres = IUnknown_QueryInterface(This->document, &IID_IPersistHistory, (void**)&persist_history); + if(FAILED(hres)) + return NULL; + + hres = CreateStreamOnHGlobal(NULL, TRUE, &stream); + if(SUCCEEDED(hres)) + hres = IPersistHistory_SaveHistory(persist_history, stream); + IPersistHistory_Release(persist_history); + if(FAILED(hres)) { + IStream_Release(stream); + return NULL; + } + + return stream; +} + +static void dump_travellog(DocHost *This) +{ + unsigned i; + + for(i=0; i < This->travellog.length; i++) + TRACE("%d: %s %s\n", i, i == This->travellog.position ? "=>" : " ", debugstr_w(This->travellog.log[i].url)); + if(i == This->travellog.position) + TRACE("%d: =>\n", i); +} + static void update_travellog(DocHost *This) { travellog_entry_t *new_entry;
- if(!This->travellog) { - This->travellog = heap_alloc(4 * sizeof(*This->travellog)); - if(!This->travellog) - return; - - This->travellog_size = 4; - }else if(This->travellog_size < This->travellog_position+1) { - travellog_entry_t *new_travellog; - - new_travellog = heap_realloc(This->travellog, This->travellog_size*2*sizeof(*This->travellog)); - if(!new_travellog) - return; - - This->travellog = new_travellog; - This->travellog_size *= 2; - } - - while(This->travellog_length > This->travellog_position) - heap_free(This->travellog[--This->travellog_length].url); - - new_entry = This->travellog + This->travellog_position; + if(This->travellog.loading_pos == -1) { + /* Clear forward history. */ + if(!This->travellog.log) { + This->travellog.log = heap_alloc(4 * sizeof(*This->travellog.log)); + if(!This->travellog.log) + return; + + This->travellog.size = 4; + }else if(This->travellog.size < This->travellog.position+1) { + travellog_entry_t *new_travellog; + + new_travellog = heap_realloc(This->travellog.log, This->travellog.size*2*sizeof(*This->travellog.log)); + if(!new_travellog) + return; + + This->travellog.log = new_travellog; + This->travellog.size *= 2; + } + + while(This->travellog.length > This->travellog.position) + free_travellog_entry(This->travellog.log + --This->travellog.length); + } + + new_entry = This->travellog.log + This->travellog.position;
new_entry->url = heap_strdupW(This->url); + TRACE("Adding %s at %d\n", debugstr_w(This->url), This->travellog.position); if(!new_entry->url) return;
- This->travellog_position++; + new_entry->stream = get_travellog_stream(This); + + if(This->travellog.loading_pos == -1) { + This->travellog.position++; + }else { + This->travellog.position = This->travellog.loading_pos; + This->travellog.loading_pos = -1; + } + if(This->travellog.position > This->travellog.length) + This->travellog.length = This->travellog.position; + + dump_travellog(This); }
void create_doc_view_hwnd(DocHost *This) @@ -975,6 +1054,8 @@ This->ready_state = READYSTATE_UNINITIALIZED; list_init(&This->task_queue);
+ This->travellog.loading_pos = -1; + DocHost_ClientSite_Init(This); DocHost_Frame_Init(This);
@@ -994,9 +1075,9 @@
ConnectionPointContainer_Destroy(&This->cps);
- while(This->travellog_length) - heap_free(This->travellog[--This->travellog_length].url); - heap_free(This->travellog); + while(This->travellog.length) + free_travellog_entry(This->travellog.log + --This->travellog.length); + heap_free(This->travellog.log);
heap_free(This->url); }
Modified: trunk/reactos/dll/win32/ieframe/events.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ieframe/events.c?... ============================================================================== --- trunk/reactos/dll/win32/ieframe/events.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ieframe/events.c [iso-8859-1] Thu Sep 19 18:48:34 2013 @@ -109,8 +109,6 @@ return CONNECT_E_NOCONNECTION; }
-#undef impl_from_IConnectionPointContainer - static const IConnectionPointContainerVtbl ConnectionPointContainerVtbl = { ConnectionPointContainer_QueryInterface, @@ -129,6 +127,120 @@ { return CONTAINING_RECORD(iface, ConnectionPoint, IConnectionPoint_iface); } + +typedef struct { + IEnumConnections IEnumConnections_iface; + + LONG ref; + + ConnectionPoint *cp; + DWORD iter; +} EnumConnections; + +static inline EnumConnections *impl_from_IEnumConnections(IEnumConnections *iface) +{ + return CONTAINING_RECORD(iface, EnumConnections, IEnumConnections_iface); +} + +static HRESULT WINAPI EnumConnections_QueryInterface(IEnumConnections *iface, REFIID riid, void **ppv) +{ + EnumConnections *This = impl_from_IEnumConnections(iface); + + if(IsEqualGUID(&IID_IUnknown, riid)) { + TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv); + *ppv = &This->IEnumConnections_iface; + }else if(IsEqualGUID(&IID_IEnumConnections, riid)) { + TRACE("(%p)->(IID_IEnumConnections %p)\n", This, ppv); + *ppv = &This->IEnumConnections_iface; + }else { + WARN("Unsupported interface %s\n", debugstr_guid(riid)); + *ppv = NULL; + return E_NOINTERFACE; + } + + IUnknown_AddRef((IUnknown*)*ppv); + return S_OK; +} + +static ULONG WINAPI EnumConnections_AddRef(IEnumConnections *iface) +{ + EnumConnections *This = impl_from_IEnumConnections(iface); + LONG ref = InterlockedIncrement(&This->ref); + + TRACE("(%p) ref=%d\n", This, ref); + + return ref; +} + +static ULONG WINAPI EnumConnections_Release(IEnumConnections *iface) +{ + EnumConnections *This = impl_from_IEnumConnections(iface); + LONG ref = InterlockedDecrement(&This->ref); + + TRACE("(%p) ref=%d\n", This, ref); + + if(!ref) { + IConnectionPoint_Release(&This->cp->IConnectionPoint_iface); + heap_free(This); + } + + return ref; +} + +static HRESULT WINAPI EnumConnections_Next(IEnumConnections *iface, ULONG cConnections, CONNECTDATA *pgcd, ULONG *pcFetched) +{ + EnumConnections *This = impl_from_IEnumConnections(iface); + ULONG cnt = 0; + + TRACE("(%p)->(%u %p %p)\n", This, cConnections, pgcd, pcFetched); + + while(cConnections--) { + while(This->iter < This->cp->sinks_size && !This->cp->sinks[This->iter]) + This->iter++; + if(This->iter == This->cp->sinks_size) + break; + + pgcd[cnt].pUnk = (IUnknown*)This->cp->sinks[This->iter]; + pgcd[cnt].dwCookie = cnt+1; + This->iter++; + cnt++; + } + + if(pcFetched) + *pcFetched = cnt; + return cnt ? S_OK : S_FALSE; +} + +static HRESULT WINAPI EnumConnections_Skip(IEnumConnections *iface, ULONG cConnections) +{ + EnumConnections *This = impl_from_IEnumConnections(iface); + FIXME("(%p)->(%u)\n", This, cConnections); + return E_NOTIMPL; +} + +static HRESULT WINAPI EnumConnections_Reset(IEnumConnections *iface) +{ + EnumConnections *This = impl_from_IEnumConnections(iface); + FIXME("(%p)\n", This); + return E_NOTIMPL; +} + +static HRESULT WINAPI EnumConnections_Clone(IEnumConnections *iface, IEnumConnections **ppEnum) +{ + EnumConnections *This = impl_from_IEnumConnections(iface); + FIXME("(%p)->(%p)\n", This, ppEnum); + return E_NOTIMPL; +} + +static const IEnumConnectionsVtbl EnumConnectionsVtbl = { + EnumConnections_QueryInterface, + EnumConnections_AddRef, + EnumConnections_Release, + EnumConnections_Next, + EnumConnections_Skip, + EnumConnections_Reset, + EnumConnections_Clone +};
static HRESULT WINAPI ConnectionPoint_QueryInterface(IConnectionPoint *iface, REFIID riid, LPVOID *ppv) @@ -245,8 +357,23 @@ IEnumConnections **ppEnum) { ConnectionPoint *This = impl_from_IConnectionPoint(iface); - FIXME("(%p)->(%p)\n", This, ppEnum); - return E_NOTIMPL; + EnumConnections *ret; + + TRACE("(%p)->(%p)\n", This, ppEnum); + + ret = heap_alloc(sizeof(*ret)); + if(!ret) + return E_OUTOFMEMORY; + + ret->IEnumConnections_iface.lpVtbl = &EnumConnectionsVtbl; + ret->ref = 1; + ret->iter = 0; + + IConnectionPoint_AddRef(&This->IConnectionPoint_iface); + ret->cp = This; + + *ppEnum = &ret->IEnumConnections_iface; + return S_OK; }
static const IConnectionPointVtbl ConnectionPointVtbl =
Modified: trunk/reactos/dll/win32/ieframe/ie.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ieframe/ie.c?rev=... ============================================================================== --- trunk/reactos/dll/win32/ieframe/ie.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ieframe/ie.c [iso-8859-1] Thu Sep 19 18:48:34 2013 @@ -50,7 +50,10 @@ *ppv = &This->IWebBrowser2_iface; }else if(IsEqualGUID(&IID_IConnectionPointContainer, riid)) { TRACE("(%p)->(IID_IConnectionPointContainer %p)\n", This, ppv); - *ppv = &This->doc_host->doc_host.cps.IConnectionPointContainer_iface; + *ppv = &This->doc_host.cps.IConnectionPointContainer_iface; + }else if(IsEqualGUID(&IID_IExternalConnection, riid)) { + TRACE("(%p)->(IID_IExternalConnection %p)\n", This, ppv); + *ppv = &This->IExternalConnection_iface; }else if(IsEqualGUID(&IID_IServiceProvider, riid)) { TRACE("(%p)->(IID_IServiceProvider %p)\n", This, ppv); *ppv = &This->IServiceProvider_iface; @@ -83,14 +86,8 @@ TRACE("(%p) ref=%d\n", This, ref);
if(!ref) { - if(This->doc_host) { - deactivate_document(&This->doc_host->doc_host); - DocHost_Release(&This->doc_host->doc_host); - if(This->doc_host) { - This->doc_host->ie = NULL; - This->doc_host->doc_host.container_vtbl->release(&This->doc_host->doc_host); - } - } + deactivate_document(&This->doc_host); + DocHost_Release(&This->doc_host);
if(This->frame_hwnd) DestroyWindow(This->frame_hwnd); @@ -143,21 +140,21 @@ { InternetExplorer *This = impl_from_IWebBrowser2(iface); TRACE("(%p)\n", This); - return go_back(&This->doc_host->doc_host); + return go_back(&This->doc_host); }
static HRESULT WINAPI InternetExplorer_GoForward(IWebBrowser2 *iface) { InternetExplorer *This = impl_from_IWebBrowser2(iface); - FIXME("(%p)\n", This); - return E_NOTIMPL; + TRACE("(%p)\n", This); + return go_forward(&This->doc_host); }
static HRESULT WINAPI InternetExplorer_GoHome(IWebBrowser2 *iface) { InternetExplorer *This = impl_from_IWebBrowser2(iface); TRACE("(%p)\n", This); - return go_home(&This->doc_host->doc_host); + return go_home(&This->doc_host); }
static HRESULT WINAPI InternetExplorer_GoSearch(IWebBrowser2 *iface) @@ -176,7 +173,7 @@ TRACE("(%p)->(%s %p %p %p %p)\n", This, debugstr_w(szUrl), Flags, TargetFrameName, PostData, Headers);
- return navigate_url(&This->doc_host->doc_host, szUrl, Flags, TargetFrameName, PostData, Headers); + return navigate_url(&This->doc_host, szUrl, Flags, TargetFrameName, PostData, Headers); }
static HRESULT WINAPI InternetExplorer_Refresh(IWebBrowser2 *iface) @@ -185,7 +182,7 @@
TRACE("(%p)\n", This);
- return refresh_document(&This->doc_host->doc_host); + return refresh_document(&This->doc_host); }
static HRESULT WINAPI InternetExplorer_Refresh2(IWebBrowser2 *iface, VARIANT *Level) @@ -313,7 +310,7 @@
TRACE("(%p)->(%p)\n", This, LocationURL);
- return get_location_url(&This->doc_host->doc_host, LocationURL); + return get_location_url(&This->doc_host, LocationURL); }
static HRESULT WINAPI InternetExplorer_get_Busy(IWebBrowser2 *iface, VARIANT_BOOL *pBool) @@ -495,7 +492,7 @@ return E_INVALIDARG; }
- return navigate_url(&This->doc_host->doc_host, V_BSTR(URL), Flags, TargetFrameName, PostData, Headers); + return navigate_url(&This->doc_host, V_BSTR(URL), Flags, TargetFrameName, PostData, Headers); }
static HRESULT WINAPI InternetExplorer_QueryStatusWB(IWebBrowser2 *iface, OLECMDID cmdID, OLECMDF *pcmdf) @@ -705,6 +702,86 @@ InternetExplorer_put_Resizable };
+static inline InternetExplorer *impl_from_IExternalConnection(IExternalConnection *iface) +{ + return CONTAINING_RECORD(iface, InternetExplorer, IExternalConnection_iface); +} + +/* + * Document may keep references to InternetExplorer object causing circular references. + * We keep track of external references and release the document object when all + * external references are released. A visible main window is also considered as + * an external reference. + */ +DWORD release_extern_ref(InternetExplorer *This, BOOL last_closes) +{ + LONG ref = InterlockedDecrement(&This->extern_ref); + + TRACE("ref = %d\n", ref); + + if(ref) + return ref; + + if(!last_closes) { + WARN("Last external connection released with FALSE last_closes.\n"); + return ref; + } + + deactivate_document(&This->doc_host); + return ref; +} + +static HRESULT WINAPI ExternalConnection_QueryInterface(IExternalConnection *iface, REFIID riid, void **ppv) +{ + InternetExplorer *This = impl_from_IExternalConnection(iface); + return IWebBrowser2_QueryInterface(&This->IWebBrowser2_iface, riid, ppv); +} + +static ULONG WINAPI ExternalConnection_AddRef(IExternalConnection *iface) +{ + InternetExplorer *This = impl_from_IExternalConnection(iface); + return IWebBrowser2_AddRef(&This->IWebBrowser2_iface); +} + +static ULONG WINAPI ExternalConnection_Release(IExternalConnection *iface) +{ + InternetExplorer *This = impl_from_IExternalConnection(iface); + return IWebBrowser2_Release(&This->IWebBrowser2_iface); +} + +static DWORD WINAPI ExternalConnection_AddConnection(IExternalConnection *iface, DWORD extconn, DWORD reserved) +{ + InternetExplorer *This = impl_from_IExternalConnection(iface); + + TRACE("(%p)->(%x %x)\n", This, extconn, reserved); + + if(extconn != EXTCONN_STRONG) + return 0; + + return InterlockedIncrement(&This->extern_ref); +} + +static DWORD WINAPI ExternalConnection_ReleaseConnection(IExternalConnection *iface, DWORD extconn, + DWORD reserved, BOOL fLastReleaseCloses) +{ + InternetExplorer *This = impl_from_IExternalConnection(iface); + + TRACE("(%p)->(%x %x %x)\n", This, extconn, reserved, fLastReleaseCloses); + + if(extconn != EXTCONN_STRONG) + return 0; + + return release_extern_ref(This, fLastReleaseCloses); +} + +static const IExternalConnectionVtbl ExternalConnectionVtbl = { + ExternalConnection_QueryInterface, + ExternalConnection_AddRef, + ExternalConnection_Release, + ExternalConnection_AddConnection, + ExternalConnection_ReleaseConnection +}; + static inline InternetExplorer *impl_from_IServiceProvider(IServiceProvider *iface) { return CONTAINING_RECORD(iface, InternetExplorer, IServiceProvider_iface); @@ -736,7 +813,7 @@
if(IsEqualGUID(&SID_SHTMLWindow, riid)) { TRACE("(%p)->(SID_SHTMLWindow)\n", This); - return IHTMLWindow2_QueryInterface(&This->doc_host->doc_host.html_window.IHTMLWindow2_iface, riid, ppv); + return IHTMLWindow2_QueryInterface(&This->doc_host.html_window.IHTMLWindow2_iface, riid, ppv); }
FIXME("(%p)->(%s, %s %p)\n", This, debugstr_guid(guidService), debugstr_guid(riid), ppv); @@ -755,5 +832,6 @@ void InternetExplorer_WebBrowser_Init(InternetExplorer *This) { This->IWebBrowser2_iface.lpVtbl = &InternetExplorerVtbl; + This->IExternalConnection_iface.lpVtbl = &ExternalConnectionVtbl; This->IServiceProvider_iface.lpVtbl = &ServiceProviderVtbl; }
Modified: trunk/reactos/dll/win32/ieframe/ieframe.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ieframe/ieframe.h... ============================================================================== --- trunk/reactos/dll/win32/ieframe/ieframe.h [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ieframe/ieframe.h [iso-8859-1] Thu Sep 19 18:48:34 2013 @@ -101,6 +101,7 @@
typedef struct { WCHAR *url; + IStream *stream; } travellog_entry_t;
typedef struct _IDocHostContainerVtbl @@ -158,10 +159,13 @@ ShellBrowser *browser_service; IShellUIHelper2 *shell_ui_helper;
- travellog_entry_t *travellog; - unsigned travellog_size; - unsigned travellog_length; - unsigned travellog_position; + struct { + travellog_entry_t *log; + unsigned size; + unsigned length; + unsigned position; + int loading_pos; + } travellog;
ConnectionPointContainer cps; IEHTMLWindow html_window; @@ -215,20 +219,15 @@ DocHost doc_host; };
-typedef struct { +struct InternetExplorer { DocHost doc_host; - - LONG ref; - - InternetExplorer *ie; -} IEDocHost; - -struct InternetExplorer { IWebBrowser2 IWebBrowser2_iface; + IExternalConnection IExternalConnection_iface; IServiceProvider IServiceProvider_iface; HlinkFrame hlink_frame;
LONG ref; + LONG extern_ref;
HWND frame_hwnd; HWND status_hwnd; @@ -236,7 +235,6 @@ BOOL nohome;
struct list entry; - IEDocHost *doc_host; };
void WebBrowser_OleObject_Init(WebBrowser*) DECLSPEC_HIDDEN; @@ -270,6 +268,7 @@ HRESULT navigate_url(DocHost*,LPCWSTR,const VARIANT*,const VARIANT*,VARIANT*,VARIANT*) DECLSPEC_HIDDEN; HRESULT go_home(DocHost*) DECLSPEC_HIDDEN; HRESULT go_back(DocHost*) DECLSPEC_HIDDEN; +HRESULT go_forward(DocHost*) DECLSPEC_HIDDEN; HRESULT refresh_document(DocHost*) DECLSPEC_HIDDEN; HRESULT get_location_url(DocHost*,BSTR*) DECLSPEC_HIDDEN; HRESULT set_dochost_url(DocHost*,const WCHAR*) DECLSPEC_HIDDEN; @@ -287,6 +286,7 @@ void InternetExplorer_WebBrowser_Init(InternetExplorer*) DECLSPEC_HIDDEN; HRESULT update_ie_statustext(InternetExplorer*, LPCWSTR) DECLSPEC_HIDDEN; void released_obj(void) DECLSPEC_HIDDEN; +DWORD release_extern_ref(InternetExplorer*,BOOL) DECLSPEC_HIDDEN;
void register_iewindow_class(void) DECLSPEC_HIDDEN; void unregister_iewindow_class(void) DECLSPEC_HIDDEN;
Modified: trunk/reactos/dll/win32/ieframe/ieframe.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ieframe/ieframe.r... ============================================================================== --- trunk/reactos/dll/win32/ieframe/ieframe.rc [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ieframe/ieframe.rc [iso-8859-1] Thu Sep 19 18:48:34 2013 @@ -104,14 +104,15 @@ #define WINE_PRODUCTVERSION_STR "8.00.7601.17601" #define WINE_EXTRAVALUES VALUE "OLESelfRegister",""
-#include "wine/wine_common_ver.rc" +#include <wine/wine_common_ver.rc>
/* @makedep: ietoolbar.bmp */ IDB_IETOOLBAR BITMAP ietoolbar.bmp
/* @makedep: ieframe.rgs */ -2 WINE_REGISTRY ieframe.rgs +1 WINE_REGISTRY ieframe.rgs
-3 WINE_REGISTRY ieframe_v1.rgs +2 WINE_REGISTRY ieframe_v1.rgs +3 WINE_REGISTRY ieframe_v1.tlb.rgs
1 TYPELIB ieframe_v1.tlb
Modified: trunk/reactos/dll/win32/ieframe/ieframe_main.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ieframe/ieframe_m... ============================================================================== --- trunk/reactos/dll/win32/ieframe/ieframe_main.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ieframe/ieframe_main.c [iso-8859-1] Thu Sep 19 18:48:34 2013 @@ -218,6 +218,7 @@ DisableThreadLibraryCalls(ieframe_instance); break; case DLL_PROCESS_DETACH: + if (lpv) break; unregister_iewindow_class(); release_typelib(); }
Modified: trunk/reactos/dll/win32/ieframe/ieframe_v1.rgs URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ieframe/ieframe_v... ============================================================================== --- trunk/reactos/dll/win32/ieframe/ieframe_v1.rgs [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ieframe/ieframe_v1.rgs [iso-8859-1] Thu Sep 19 18:48:34 2013 @@ -23,276 +23,4 @@ { CLSID = s '{FBF23B40-E3F0-101B-8488-00AA003E56F8}' } - NoRemove Typelib - { - NoRemove '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' - { - '1.1' = s 'Microsoft Internet Controls' - { - '0' { win32 = s '%MODULE%' } - FLAGS = s '0' - } - } - } - NoRemove Interface - { - '{EAB22AC1-30C1-11CF-A7EB-0000C05BAE0B}' = s 'IWebBrowser' - { - ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' - ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' - TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' { val Version = s '1.1' } - } - '{EAB22AC2-30C1-11CF-A7EB-0000C05BAE0B}' = s 'DWebBrowserEvents' - { - ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' - ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' - TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' { val Version = s '1.1' } - } - '{0002DF05-0000-0000-C000-000000000046}' = s 'IWebBrowserApp' - { - ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' - ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' - TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' { val Version = s '1.1' } - } - '{D30C1661-CDAF-11D0-8A3E-00C04FC9E26E}' = s 'IWebBrowser2' - { - ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' - ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' - TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' { val Version = s '1.1' } - } - '{34A715A0-6587-11D0-924A-0020AFC7AC4D}' = s 'DWebBrowserEvents2' - { - ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' - ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' - TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' { val Version = s '1.1' } - } - '{FE4106E0-399A-11D0-A48C-00A0C90A8F39}' = s 'DShellWindowsEvents' - { - ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' - ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' - TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' { val Version = s '1.1' } - } - '{85CB6900-4D95-11CF-960C-0080C7F4EE85}' = s 'IShellWindows' - { - ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' - ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' - TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' { val Version = s '1.1' } - } - '{729FE2F8-1EA8-11D1-8F85-00C04FC2FBE1}' = s 'IShellUIHelper' - { - ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' - ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' - TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' { val Version = s '1.1' } - } - '{A7FE6EDA-1932-4281-B881-87B31B8BC52C}' = s 'IShellUIHelper2' - { - ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' - ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' - TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' { val Version = s '1.1' } - } - '{55136806-B2DE-11D1-B9F2-00A0C98BC547}' = s 'DShellNameSpaceEvents' - { - ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' - ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' - TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' { val Version = s '1.1' } - } - '{55136804-B2DE-11D1-B9F2-00A0C98BC547}' = s 'IShellFavoritesNameSpace' - { - ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' - ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' - TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' { val Version = s '1.1' } - } - '{E572D3C9-37BE-4AE2-825D-D521763E3108}' = s 'IShellNameSpace' - { - ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' - ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' - TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' { val Version = s '1.1' } - } - '{F3470F24-15FD-11D2-BB2E-00805FF7EFCA}' = s 'IScriptErrorList' - { - ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' - ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' - TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' { val Version = s '1.1' } - } - '{BA9239A4-3DD5-11D2-BF8B-00C04FB93661}' = s 'ISearch' - { - ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' - ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' - TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' { val Version = s '1.1' } - } - '{47C922A2-3DD5-11D2-BF8B-00C04FB93661}' = s 'ISearches' - { - ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' - ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' - TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' { val Version = s '1.1' } - } - '{72423E8F-8011-11D2-BE79-00A0C9A83DA1}' = s 'ISearchAssistantOC' - { - ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' - ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' - TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' { val Version = s '1.1' } - } - '{72423E8F-8011-11D2-BE79-00A0C9A83DA2}' = s 'ISearchAssistantOC2' - { - ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' - ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' - TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' { val Version = s '1.1' } - } - '{72423E8F-8011-11D2-BE79-00A0C9A83DA3}' = s 'ISearchAssistantOC3' - { - ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' - ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' - TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' { val Version = s '1.1' } - } - '{1611FDDA-445B-11D2-85DE-00C04FA35C89}' = s '_SearchAssistantEvents' - { - ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' - ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' - TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' { val Version = s '1.1' } - } - } - NoRemove CLSID - { - '{EAB22AC3-30C1-11CF-A7EB-0000C05BAE0B}' = s 'Microsoft Web Browser Version 1' - { - InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Apartment' } - ProgId = s 'Shell.Explorer.1' - TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' - Version = s '1.1' - VersionIndependentProgId = s 'Shell.Explorer' - } - '{8856F961-340A-11D0-A96B-00C04FD705A2}' = s 'Microsoft Web Browser' - { - InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Apartment' } - ProgId = s 'Shell.Explorer.2' - TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' - Version = s '1.1' - VersionIndependentProgId = s 'Shell.Explorer' - } - '{0002DF01-0000-0000-C000-000000000046}' = s 'Internet Explorer(Ver 1.0)' - { - ProgId = s 'InternetExplorer.Application.1' - TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' - Version = s '1.1' - VersionIndependentProgId = s 'InternetExplorer.Application' - } - '{9BA05972-F6A8-11CF-A442-00A0C90A8F39}' = s 'ShellWindows' - { - InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Apartment' } - TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' - Version = s '1.1' - } - '{64AB4BB7-111E-11D1-8F79-00C04FC2FBE1}' = s 'Microsoft Shell UI Helper' - { - InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Apartment' } - ProgId = s 'Shell.UIHelper.1' - TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' - Version = s '1.1' - VersionIndependentProgId = s 'Shell.UIHelper' - } - '{2F2F1F96-2BC1-4B1C-BE28-EA3774F4676A}' = s 'Shell Name Space' - { - InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Apartment' } - ProgId = s 'ShellNameSpace.ShellNameSpace.1' - TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' - Version = s '1.1' - VersionIndependentProgId = s 'ShellNameSpace.ShellNameSpace' - } - '{55136805-B2DE-11D1-B9F2-00A0C98BC547}' = s 'Shell Name Space' - { - InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Apartment' } - ProgId = s 'ShellNameSpace.ShellNameSpace.1' - TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' - Version = s '1.1' - VersionIndependentProgId = s 'ShellNameSpace.ShellNameSpace' - } - '{2E71FD0F-AAB1-42C0-9146-6D2C4EDCF07D}' = s 'SearchAssistantOC' - { - InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Apartment' } - ProgId = s 'SearchAssistantOC.SearchAssistantOC.1' - TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' - Version = s '1.1' - VersionIndependentProgId = s 'SearchAssistantOC.SearchAssistantOC' - } - '{B45FF030-4447-11D2-85DE-00C04FA35C89}' = s 'SearchAssistantOC' - { - InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Apartment' } - ProgId = s 'SearchAssistantOC.SearchAssistantOC.1' - TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' - Version = s '1.1' - VersionIndependentProgId = s 'SearchAssistantOC.SearchAssistantOC' - } - } - 'Shell.Explorer.1' = s 'Microsoft Web Browser Version 1' - { - CLSID = s '{EAB22AC3-30C1-11CF-A7EB-0000C05BAE0B}' - } - 'Shell.Explorer' = s 'Microsoft Web Browser Version 1' - { - CLSID = s '{EAB22AC3-30C1-11CF-A7EB-0000C05BAE0B}' - CurVer = s 'Shell.Explorer.1' - } - 'Shell.Explorer.2' = s 'Microsoft Web Browser' - { - CLSID = s '{8856F961-340A-11D0-A96B-00C04FD705A2}' - } - 'Shell.Explorer' = s 'Microsoft Web Browser' - { - CLSID = s '{8856F961-340A-11D0-A96B-00C04FD705A2}' - CurVer = s 'Shell.Explorer.2' - } - 'InternetExplorer.Application.1' = s 'Internet Explorer(Ver 1.0)' - { - CLSID = s '{0002DF01-0000-0000-C000-000000000046}' - } - 'InternetExplorer.Application' = s 'Internet Explorer(Ver 1.0)' - { - CLSID = s '{0002DF01-0000-0000-C000-000000000046}' - CurVer = s 'InternetExplorer.Application.1' - } - 'Shell.UIHelper.1' = s 'Microsoft Shell UI Helper' - { - CLSID = s '{64AB4BB7-111E-11D1-8F79-00C04FC2FBE1}' - } - 'Shell.UIHelper' = s 'Microsoft Shell UI Helper' - { - CLSID = s '{64AB4BB7-111E-11D1-8F79-00C04FC2FBE1}' - CurVer = s 'Shell.UIHelper.1' - } - 'ShellNameSpace.ShellNameSpace.1' = s 'Shell Name Space' - { - CLSID = s '{2F2F1F96-2BC1-4B1C-BE28-EA3774F4676A}' - } - 'ShellNameSpace.ShellNameSpace' = s 'Shell Name Space' - { - CLSID = s '{2F2F1F96-2BC1-4B1C-BE28-EA3774F4676A}' - CurVer = s 'ShellNameSpace.ShellNameSpace.1' - } - 'ShellNameSpace.ShellNameSpace.1' = s 'Shell Name Space' - { - CLSID = s '{55136805-B2DE-11D1-B9F2-00A0C98BC547}' - } - 'ShellNameSpace.ShellNameSpace' = s 'Shell Name Space' - { - CLSID = s '{55136805-B2DE-11D1-B9F2-00A0C98BC547}' - CurVer = s 'ShellNameSpace.ShellNameSpace.1' - } - 'SearchAssistantOC.SearchAssistantOC.1' = s 'SearchAssistantOC' - { - CLSID = s '{2E71FD0F-AAB1-42C0-9146-6D2C4EDCF07D}' - } - 'SearchAssistantOC.SearchAssistantOC' = s 'SearchAssistantOC' - { - CLSID = s '{2E71FD0F-AAB1-42C0-9146-6D2C4EDCF07D}' - CurVer = s 'SearchAssistantOC.SearchAssistantOC.1' - } - 'SearchAssistantOC.SearchAssistantOC.1' = s 'SearchAssistantOC' - { - CLSID = s '{B45FF030-4447-11D2-85DE-00C04FA35C89}' - } - 'SearchAssistantOC.SearchAssistantOC' = s 'SearchAssistantOC' - { - CLSID = s '{B45FF030-4447-11D2-85DE-00C04FA35C89}' - CurVer = s 'SearchAssistantOC.SearchAssistantOC.1' - } }
Added: trunk/reactos/dll/win32/ieframe/ieframe_v1.tlb.rgs URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ieframe/ieframe_v... ============================================================================== --- trunk/reactos/dll/win32/ieframe/ieframe_v1.tlb.rgs (added) +++ trunk/reactos/dll/win32/ieframe/ieframe_v1.tlb.rgs [iso-8859-1] Thu Sep 19 18:48:34 2013 @@ -0,0 +1,275 @@ +HKCR +{ + NoRemove Typelib + { + NoRemove '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' + { + '1.1' = s 'Microsoft Internet Controls' + { + '0' { win32 = s '%MODULE%' } + FLAGS = s '0' + } + } + } + NoRemove Interface + { + '{EAB22AC1-30C1-11CF-A7EB-0000C05BAE0B}' = s 'IWebBrowser' + { + ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' + ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' + TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' { val Version = s '1.1' } + } + '{EAB22AC2-30C1-11CF-A7EB-0000C05BAE0B}' = s 'DWebBrowserEvents' + { + ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' + ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' + TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' { val Version = s '1.1' } + } + '{0002DF05-0000-0000-C000-000000000046}' = s 'IWebBrowserApp' + { + ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' + ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' + TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' { val Version = s '1.1' } + } + '{D30C1661-CDAF-11D0-8A3E-00C04FC9E26E}' = s 'IWebBrowser2' + { + ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' + ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' + TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' { val Version = s '1.1' } + } + '{34A715A0-6587-11D0-924A-0020AFC7AC4D}' = s 'DWebBrowserEvents2' + { + ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' + ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' + TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' { val Version = s '1.1' } + } + '{FE4106E0-399A-11D0-A48C-00A0C90A8F39}' = s 'DShellWindowsEvents' + { + ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' + ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' + TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' { val Version = s '1.1' } + } + '{85CB6900-4D95-11CF-960C-0080C7F4EE85}' = s 'IShellWindows' + { + ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' + ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' + TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' { val Version = s '1.1' } + } + '{729FE2F8-1EA8-11D1-8F85-00C04FC2FBE1}' = s 'IShellUIHelper' + { + ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' + ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' + TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' { val Version = s '1.1' } + } + '{A7FE6EDA-1932-4281-B881-87B31B8BC52C}' = s 'IShellUIHelper2' + { + ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' + ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' + TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' { val Version = s '1.1' } + } + '{55136806-B2DE-11D1-B9F2-00A0C98BC547}' = s 'DShellNameSpaceEvents' + { + ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' + ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' + TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' { val Version = s '1.1' } + } + '{55136804-B2DE-11D1-B9F2-00A0C98BC547}' = s 'IShellFavoritesNameSpace' + { + ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' + ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' + TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' { val Version = s '1.1' } + } + '{E572D3C9-37BE-4AE2-825D-D521763E3108}' = s 'IShellNameSpace' + { + ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' + ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' + TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' { val Version = s '1.1' } + } + '{F3470F24-15FD-11D2-BB2E-00805FF7EFCA}' = s 'IScriptErrorList' + { + ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' + ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' + TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' { val Version = s '1.1' } + } + '{BA9239A4-3DD5-11D2-BF8B-00C04FB93661}' = s 'ISearch' + { + ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' + ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' + TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' { val Version = s '1.1' } + } + '{47C922A2-3DD5-11D2-BF8B-00C04FB93661}' = s 'ISearches' + { + ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' + ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' + TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' { val Version = s '1.1' } + } + '{72423E8F-8011-11D2-BE79-00A0C9A83DA1}' = s 'ISearchAssistantOC' + { + ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' + ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' + TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' { val Version = s '1.1' } + } + '{72423E8F-8011-11D2-BE79-00A0C9A83DA2}' = s 'ISearchAssistantOC2' + { + ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' + ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' + TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' { val Version = s '1.1' } + } + '{72423E8F-8011-11D2-BE79-00A0C9A83DA3}' = s 'ISearchAssistantOC3' + { + ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' + ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' + TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' { val Version = s '1.1' } + } + '{1611FDDA-445B-11D2-85DE-00C04FA35C89}' = s '_SearchAssistantEvents' + { + ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}' + ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}' + TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' { val Version = s '1.1' } + } + } + NoRemove CLSID + { + '{EAB22AC3-30C1-11CF-A7EB-0000C05BAE0B}' = s 'Microsoft Web Browser Version 1' + { + InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Apartment' } + ProgId = s 'Shell.Explorer.1' + TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' + Version = s '1.1' + VersionIndependentProgId = s 'Shell.Explorer' + } + '{8856F961-340A-11D0-A96B-00C04FD705A2}' = s 'Microsoft Web Browser' + { + InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Apartment' } + ProgId = s 'Shell.Explorer.2' + TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' + Version = s '1.1' + VersionIndependentProgId = s 'Shell.Explorer' + } + '{0002DF01-0000-0000-C000-000000000046}' = s 'Internet Explorer(Ver 1.0)' + { + ProgId = s 'InternetExplorer.Application.1' + TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' + Version = s '1.1' + VersionIndependentProgId = s 'InternetExplorer.Application' + } + '{9BA05972-F6A8-11CF-A442-00A0C90A8F39}' = s 'ShellWindows' + { + InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Apartment' } + TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' + Version = s '1.1' + } + '{64AB4BB7-111E-11D1-8F79-00C04FC2FBE1}' = s 'Microsoft Shell UI Helper' + { + InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Apartment' } + ProgId = s 'Shell.UIHelper.1' + TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' + Version = s '1.1' + VersionIndependentProgId = s 'Shell.UIHelper' + } + '{2F2F1F96-2BC1-4B1C-BE28-EA3774F4676A}' = s 'Shell Name Space' + { + InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Apartment' } + ProgId = s 'ShellNameSpace.ShellNameSpace.1' + TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' + Version = s '1.1' + VersionIndependentProgId = s 'ShellNameSpace.ShellNameSpace' + } + '{55136805-B2DE-11D1-B9F2-00A0C98BC547}' = s 'Shell Name Space' + { + InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Apartment' } + ProgId = s 'ShellNameSpace.ShellNameSpace.1' + TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' + Version = s '1.1' + VersionIndependentProgId = s 'ShellNameSpace.ShellNameSpace' + } + '{2E71FD0F-AAB1-42C0-9146-6D2C4EDCF07D}' = s 'SearchAssistantOC' + { + InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Apartment' } + ProgId = s 'SearchAssistantOC.SearchAssistantOC.1' + TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' + Version = s '1.1' + VersionIndependentProgId = s 'SearchAssistantOC.SearchAssistantOC' + } + '{B45FF030-4447-11D2-85DE-00C04FA35C89}' = s 'SearchAssistantOC' + { + InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Apartment' } + ProgId = s 'SearchAssistantOC.SearchAssistantOC.1' + TypeLib = s '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' + Version = s '1.1' + VersionIndependentProgId = s 'SearchAssistantOC.SearchAssistantOC' + } + } + 'Shell.Explorer.1' = s 'Microsoft Web Browser Version 1' + { + CLSID = s '{EAB22AC3-30C1-11CF-A7EB-0000C05BAE0B}' + } + 'Shell.Explorer' = s 'Microsoft Web Browser Version 1' + { + CLSID = s '{EAB22AC3-30C1-11CF-A7EB-0000C05BAE0B}' + CurVer = s 'Shell.Explorer.1' + } + 'Shell.Explorer.2' = s 'Microsoft Web Browser' + { + CLSID = s '{8856F961-340A-11D0-A96B-00C04FD705A2}' + } + 'Shell.Explorer' = s 'Microsoft Web Browser' + { + CLSID = s '{8856F961-340A-11D0-A96B-00C04FD705A2}' + CurVer = s 'Shell.Explorer.2' + } + 'InternetExplorer.Application.1' = s 'Internet Explorer(Ver 1.0)' + { + CLSID = s '{0002DF01-0000-0000-C000-000000000046}' + } + 'InternetExplorer.Application' = s 'Internet Explorer(Ver 1.0)' + { + CLSID = s '{0002DF01-0000-0000-C000-000000000046}' + CurVer = s 'InternetExplorer.Application.1' + } + 'Shell.UIHelper.1' = s 'Microsoft Shell UI Helper' + { + CLSID = s '{64AB4BB7-111E-11D1-8F79-00C04FC2FBE1}' + } + 'Shell.UIHelper' = s 'Microsoft Shell UI Helper' + { + CLSID = s '{64AB4BB7-111E-11D1-8F79-00C04FC2FBE1}' + CurVer = s 'Shell.UIHelper.1' + } + 'ShellNameSpace.ShellNameSpace.1' = s 'Shell Name Space' + { + CLSID = s '{2F2F1F96-2BC1-4B1C-BE28-EA3774F4676A}' + } + 'ShellNameSpace.ShellNameSpace' = s 'Shell Name Space' + { + CLSID = s '{2F2F1F96-2BC1-4B1C-BE28-EA3774F4676A}' + CurVer = s 'ShellNameSpace.ShellNameSpace.1' + } + 'ShellNameSpace.ShellNameSpace.1' = s 'Shell Name Space' + { + CLSID = s '{55136805-B2DE-11D1-B9F2-00A0C98BC547}' + } + 'ShellNameSpace.ShellNameSpace' = s 'Shell Name Space' + { + CLSID = s '{55136805-B2DE-11D1-B9F2-00A0C98BC547}' + CurVer = s 'ShellNameSpace.ShellNameSpace.1' + } + 'SearchAssistantOC.SearchAssistantOC.1' = s 'SearchAssistantOC' + { + CLSID = s '{2E71FD0F-AAB1-42C0-9146-6D2C4EDCF07D}' + } + 'SearchAssistantOC.SearchAssistantOC' = s 'SearchAssistantOC' + { + CLSID = s '{2E71FD0F-AAB1-42C0-9146-6D2C4EDCF07D}' + CurVer = s 'SearchAssistantOC.SearchAssistantOC.1' + } + 'SearchAssistantOC.SearchAssistantOC.1' = s 'SearchAssistantOC' + { + CLSID = s '{B45FF030-4447-11D2-85DE-00C04FA35C89}' + } + 'SearchAssistantOC.SearchAssistantOC' = s 'SearchAssistantOC' + { + CLSID = s '{B45FF030-4447-11D2-85DE-00C04FA35C89}' + CurVer = s 'SearchAssistantOC.SearchAssistantOC.1' + } +}
Propchange: trunk/reactos/dll/win32/ieframe/ieframe_v1.tlb.rgs ------------------------------------------------------------------------------ svn:eol-style = native
Modified: trunk/reactos/dll/win32/ieframe/iexplore.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ieframe/iexplore.... ============================================================================== --- trunk/reactos/dll/win32/ieframe/iexplore.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ieframe/iexplore.c [iso-8859-1] Thu Sep 19 18:48:34 2013 @@ -518,8 +518,8 @@
adjust_ie_docobj_rect(This->frame_hwnd, &docarea);
- if(This->doc_host->doc_host.hwnd) - SetWindowPos(This->doc_host->doc_host.hwnd, NULL, docarea.left, docarea.top, docarea.right, docarea.bottom, + if(This->doc_host.hwnd) + SetWindowPos(This->doc_host.hwnd, NULL, docarea.left, docarea.top, docarea.right, docarea.bottom, SWP_NOZORDER | SWP_NOACTIVATE);
SetWindowPos(hwndRebar, NULL, 0, 0, width, barHeight, SWP_NOZORDER | SWP_NOACTIVATE); @@ -557,8 +557,8 @@ GetClientRect(This->frame_hwnd, &docarea); adjust_ie_docobj_rect(This->frame_hwnd, &docarea);
- if(This->doc_host->doc_host.hwnd) - SetWindowPos(This->doc_host->doc_host.hwnd, NULL, docarea.left, docarea.top, docarea.right, docarea.bottom, + if(This->doc_host.hwnd) + SetWindowPos(This->doc_host.hwnd, NULL, docarea.left, docarea.top, docarea.right, docarea.bottom, SWP_NOZORDER | SWP_NOACTIVATE); }
@@ -589,11 +589,11 @@ break;
case ID_BROWSE_PRINT: - if(This->doc_host->doc_host.document) + if(This->doc_host.document) { IOleCommandTarget* target;
- if(FAILED(IUnknown_QueryInterface(This->doc_host->doc_host.document, &IID_IOleCommandTarget, (LPVOID*)&target))) + if(FAILED(IUnknown_QueryInterface(This->doc_host.document, &IID_IOleCommandTarget, (LPVOID*)&target))) break;
IOleCommandTarget_Exec(target, &CGID_MSHTML, IDM_PRINT, OLECMDEXECOPT_DODEFAULT, NULL, NULL); @@ -669,10 +669,13 @@ return 0; case WM_SHOWWINDOW: TRACE("WM_SHOWWINDOW %lx\n", wparam); - if(wparam) + if(wparam) { IWebBrowser2_AddRef(&This->IWebBrowser2_iface); - else + InterlockedIncrement(&This->extern_ref); + }else { + release_extern_ref(This, TRUE); IWebBrowser2_Release(&This->IWebBrowser2_iface); + } break; case WM_DESTROY: return iewnd_OnDestroy(This); @@ -683,7 +686,7 @@ case WM_NOTIFY: return iewnd_OnNotify(This, wparam, lparam); case WM_DOCHOSTTASK: - return process_dochost_tasks(&This->doc_host->doc_host); + return process_dochost_tasks(&This->doc_host); case WM_UPDATEADDRBAR: return update_addrbar(This, lparam); } @@ -727,39 +730,25 @@ CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL /* FIXME */, ieframe_instance, This);
- This->doc_host->doc_host.frame_hwnd = This->frame_hwnd; - create_doc_view_hwnd(&This->doc_host->doc_host); -} - -static inline IEDocHost *impl_from_DocHost(DocHost *iface) -{ - return CONTAINING_RECORD(iface, IEDocHost, doc_host); + This->doc_host.frame_hwnd = This->frame_hwnd; + create_doc_view_hwnd(&This->doc_host); +} + +static inline InternetExplorer *impl_from_DocHost(DocHost *iface) +{ + return CONTAINING_RECORD(iface, InternetExplorer, doc_host); }
static ULONG IEDocHost_addref(DocHost *iface) { - IEDocHost *This = impl_from_DocHost(iface); - LONG ref = InterlockedIncrement(&This->ref); - - TRACE("(%p) ref=%d\n", This, ref); - - return ref; + InternetExplorer *This = impl_from_DocHost(iface); + return IWebBrowser2_AddRef(&This->IWebBrowser2_iface); }
static ULONG IEDocHost_release(DocHost *iface) { - IEDocHost *This = impl_from_DocHost(iface); - LONG ref = InterlockedDecrement(&This->ref); - - TRACE("(%p) ref=%d\n", This, ref); - - if(!ref) { - if(This->ie) - ERR("This->ie is not NULL\n"); - heap_free(This); - } - - return ref; + InternetExplorer *This = impl_from_DocHost(iface); + return IWebBrowser2_Release(&This->IWebBrowser2_iface); }
static void WINAPI DocHostContainer_GetDocObjRect(DocHost* This, RECT* rc) @@ -770,19 +759,16 @@
static HRESULT WINAPI DocHostContainer_SetStatusText(DocHost *iface, LPCWSTR text) { - IEDocHost *This = impl_from_DocHost(iface); - return update_ie_statustext(This->ie, text); + InternetExplorer *This = impl_from_DocHost(iface); + return update_ie_statustext(This, text); }
static void WINAPI DocHostContainer_SetURL(DocHost* iface, LPCWSTR url) { - IEDocHost *This = impl_from_DocHost(iface); - - if(!This->ie) - return; - - This->ie->nohome = FALSE; - SendMessageW(This->ie->frame_hwnd, WM_UPDATEADDRBAR, 0, (LPARAM)url); + InternetExplorer *This = impl_from_DocHost(iface); + + This->nohome = FALSE; + SendMessageW(This->frame_hwnd, WM_UPDATEADDRBAR, 0, (LPARAM)url); }
static HRESULT DocHostContainer_exec(DocHost* This, const GUID *cmd_group, DWORD cmdid, DWORD execopt, VARIANT *in, @@ -808,21 +794,13 @@ if(!ret) return E_OUTOFMEMORY;
- ret->doc_host = heap_alloc_zero(sizeof(IEDocHost)); - if(!ret->doc_host) { - heap_free(ret); - return E_OUTOFMEMORY; - } - ret->ref = 1; - ret->doc_host->ref = 1; - ret->doc_host->ie = ret; - - DocHost_Init(&ret->doc_host->doc_host, &ret->IWebBrowser2_iface, &DocHostContainerVtbl); + + DocHost_Init(&ret->doc_host, &ret->IWebBrowser2_iface, &DocHostContainerVtbl);
InternetExplorer_WebBrowser_Init(ret);
- HlinkFrame_Init(&ret->hlink_frame, (IUnknown*)&ret->IWebBrowser2_iface, &ret->doc_host->doc_host); + HlinkFrame_Init(&ret->hlink_frame, (IUnknown*)&ret->IWebBrowser2_iface, &ret->doc_host);
create_frame_hwnd(ret);
@@ -1030,9 +1008,8 @@ if(!ddestr_openurl) WARN("Failed to create string handle: %u\n", DdeGetLastError(dde_inst));
- res = HandleToULong(DdeNameService(dde_inst, ddestr_iexplore, 0, DNS_REGISTER)); - if(res != DMLERR_NO_ERROR) - WARN("DdeNameService failed: %u\n", res); + if(!DdeNameService(dde_inst, ddestr_iexplore, 0, DNS_REGISTER)) + WARN("DdeNameService failed\n"); }
static void release_dde(void)
Modified: trunk/reactos/dll/win32/ieframe/navigate.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ieframe/navigate.... ============================================================================== --- trunk/reactos/dll/win32/ieframe/navigate.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ieframe/navigate.c [iso-8859-1] Thu Sep 19 18:48:34 2013 @@ -27,6 +27,7 @@ #include <shlwapi.h> #include <wininet.h> //#include "mshtml.h" +#include <perhist.h> #include "resource.h"
#include <wine/debug.h> @@ -1058,27 +1059,54 @@ return navigate_url(This, wszPageName, NULL, NULL, NULL, NULL); }
+static HRESULT navigate_history(DocHost *This, unsigned travellog_pos) +{ + IPersistHistory *persist_history; + travellog_entry_t *entry; + LARGE_INTEGER li; + HRESULT hres; + + if(!This->doc_navigate) { + FIXME("unsupported doc_navigate FALSE\n"); + return E_NOTIMPL; + } + + This->travellog.loading_pos = travellog_pos; + entry = This->travellog.log + This->travellog.loading_pos; + + if(!entry->stream) + return async_doc_navigate(This, entry->url, NULL, NULL, 0, FALSE); + + hres = IUnknown_QueryInterface(This->document, &IID_IPersistHistory, (void**)&persist_history); + if(FAILED(hres)) + return hres; + + li.QuadPart = 0; + IStream_Seek(entry->stream, li, STREAM_SEEK_SET, NULL); + + hres = IPersistHistory_LoadHistory(persist_history, entry->stream, NULL); + IPersistHistory_Release(persist_history); + return hres; +} + HRESULT go_back(DocHost *This) { - WCHAR *url; - HRESULT hres; - - if(!This->travellog_position) { + if(!This->travellog.position) { WARN("No history available\n"); return E_FAIL; }
- url = This->travellog[--This->travellog_position].url; - - if(This->doc_navigate) { - hres = async_doc_navigate(This, url, NULL, NULL, 0, FALSE); - }else { - FIXME("unsupported doc_navigate FALSE\n"); - hres = E_NOTIMPL; - } - - heap_free(url); - return hres; + return navigate_history(This, This->travellog.position-1); +} + +HRESULT go_forward(DocHost *This) +{ + if(This->travellog.position >= This->travellog.length) { + WARN("No history available\n"); + return E_FAIL; + } + + return navigate_history(This, This->travellog.position+1); }
HRESULT get_location_url(DocHost *This, BSTR *ret)
Modified: trunk/reactos/dll/win32/ieframe/shellbrowser.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ieframe/shellbrow... ============================================================================== --- trunk/reactos/dll/win32/ieframe/shellbrowser.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ieframe/shellbrowser.c [iso-8859-1] Thu Sep 19 18:48:34 2013 @@ -726,6 +726,7 @@ 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}; @@ -735,6 +736,12 @@
TRACE("%p %p %x\n", This, pHTMLWindow2, dwFlags);
+ 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; @@ -751,7 +758,7 @@ V_VARIANTREF(params) = &url_var;
V_VT(params+1) = VT_DISPATCH; - V_DISPATCH(params+1) = (IDispatch*)This->doc_host->wb; + V_DISPATCH(params+1) = (IDispatch*)doc_host->wb;
V_VT(&url_var) = VT_BSTR; V_BSTR(&url_var) = url; @@ -817,12 +824,18 @@ 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); - This->doc_host->busy = VARIANT_FALSE; + if(This->doc_host) + This->doc_host->busy = VARIANT_FALSE; + + IShellBrowser_Release(&This->IShellBrowser_iface); return S_OK; }
Modified: trunk/reactos/dll/win32/ieframe/webbrowser.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ieframe/webbrowse... ============================================================================== --- trunk/reactos/dll/win32/ieframe/webbrowser.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ieframe/webbrowser.c [iso-8859-1] Thu Sep 19 18:48:34 2013 @@ -259,8 +259,8 @@ static HRESULT WINAPI WebBrowser_GoForward(IWebBrowser2 *iface) { WebBrowser *This = impl_from_IWebBrowser2(iface); - FIXME("(%p)\n", This); - return E_NOTIMPL; + TRACE("(%p)\n", This); + return go_forward(&This->doc_host); }
static HRESULT WINAPI WebBrowser_GoHome(IWebBrowser2 *iface)
Modified: trunk/reactos/media/doc/README.WINE URL: http://svn.reactos.org/svn/reactos/trunk/reactos/media/doc/README.WINE?rev=6... ============================================================================== --- trunk/reactos/media/doc/README.WINE [iso-8859-1] (original) +++ trunk/reactos/media/doc/README.WINE [iso-8859-1] Thu Sep 19 18:48:34 2013 @@ -80,7 +80,7 @@ reactos/dll/win32/httpapi # Synced to Wine-1.7.1 reactos/dll/win32/iccvid # Synced to Wine-1.7.1 reactos/dll/win32/icmp # Synced to Wine-0_9_10 -reactos/dll/win32/ieframe # Synced to Wine-1.5.26 +reactos/dll/win32/ieframe # Synced to Wine-1.7.1 reactos/dll/win32/imaadp32.acm # Synced to Wine-1.5.4 reactos/dll/win32/imagehlp # Synced to Wine-1.5.4 reactos/dll/win32/imm32 # Synced to Wine-1.5.19