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.…
==============================================================================
--- 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.…
==============================================================================
--- 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.…
==============================================================================
--- 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_…
==============================================================================
--- 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_…
==============================================================================
--- 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_…
==============================================================================
--- 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/shellbro…
==============================================================================
--- 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/webbrows…
==============================================================================
--- 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=…
==============================================================================
--- 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