Jacek Caban : mshtml: Added nsIEmbeddingSiteWindow implementation.

Alexandre Julliard julliard at wine.codeweavers.com
Fri Dec 9 05:54:13 CST 2005


Module: wine
Branch: refs/heads/master
Commit: 37b1a456d706b32be02117d40f6dd4edc8cb3bb9
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=37b1a456d706b32be02117d40f6dd4edc8cb3bb9

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Fri Dec  9 11:23:58 2005 +0100

mshtml: Added nsIEmbeddingSiteWindow implementation.

---

 dlls/mshtml/mshtml_private.h |    2 +
 dlls/mshtml/nsembed.c        |  109 ++++++++++++++++++++++++++++++++++++++++++
 dlls/mshtml/nsiface.idl      |   16 ++++++
 3 files changed, 127 insertions(+), 0 deletions(-)

diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h
index d3b42e6..457d5cf 100644
--- a/dlls/mshtml/mshtml_private.h
+++ b/dlls/mshtml/mshtml_private.h
@@ -80,6 +80,7 @@ struct NSContainer {
     const nsIWebBrowserChromeVtbl     *lpWebBrowserChromeVtbl;
     const nsIContextMenuListenerVtbl  *lpContextMenuListenerVtbl;
     const nsIURIContentListenerVtbl   *lpURIContentListenerVtbl;
+    const nsIEmbeddingSiteWindowVtbl  *lpEmbeddingSiteWindowVtbl;
 
     nsIWebBrowser *webbrowser;
     nsIWebNavigation *navigation;
@@ -117,6 +118,7 @@ struct NSContainer {
 #define NSWBCHROME(x)    ((nsIWebBrowserChrome*)          &(x)->lpWebBrowserChromeVtbl)
 #define NSCML(x)         ((nsIContextMenuListener*)       &(x)->lpContextMenuListenerVtbl)
 #define NSURICL(x)       ((nsIURIContentListener*)        &(x)->lpURIContentListenerVtbl)
+#define NSEMBWNDS(x)     ((nsIEmbeddingSiteWindow*)       &(x)->lpEmbeddingSiteWindowVtbl)
 
 #define DEFINE_THIS(cls,ifc,iface) ((cls*)((BYTE*)(iface)-offsetof(cls,lp ## ifc ## Vtbl)))
 
diff --git a/dlls/mshtml/nsembed.c b/dlls/mshtml/nsembed.c
index 6380c48..3e7a04f 100644
--- a/dlls/mshtml/nsembed.c
+++ b/dlls/mshtml/nsembed.c
@@ -395,6 +395,9 @@ static nsresult NSAPI nsWebBrowserChrome
     }else if(IsEqualGUID(&IID_nsIContextMenuListener, riid)) {
         TRACE("(%p)->(IID_nsIContextMenuListener, %p)\n", This, result);
         *result = NSCML(This);
+    }else if(IsEqualGUID(&IID_nsIEmbeddingSiteWindow, riid)) {
+        TRACE("(%p)->(IIS_nsIEmbeddingSiteWindow %p)\n", This, result);
+        *result = NSEMBWNDS(This);
     }
 
     if(*result)
@@ -749,6 +752,111 @@ static const nsIURIContentListenerVtbl n
     nsURIContentListener_SetParentContentListener
 };
 
+/**********************************************************
+ *      nsIEmbeddinSiteWindow interface
+ */
+
+#define NSEMBWNDS_THIS(iface) DEFINE_THIS(NSContainer, EmbeddingSiteWindow, iface)
+
+static nsresult NSAPI nsEmbeddingSiteWindow_QueryInterface(nsIEmbeddingSiteWindow *iface,
+        nsIIDRef riid, nsQIResult result)
+{
+    NSContainer *This = NSEMBWNDS_THIS(iface);
+    return nsIWebBrowserChrome_QueryInterface(NSWBCHROME(This), riid, result);
+}
+
+static nsrefcnt NSAPI nsEmbeddingSiteWindow_AddRef(nsIEmbeddingSiteWindow *iface)
+{
+    NSContainer *This = NSEMBWNDS_THIS(iface);
+    return nsIWebBrowserChrome_AddRef(NSWBCHROME(This));
+}
+
+static nsrefcnt NSAPI nsEmbeddingSiteWindow_Release(nsIEmbeddingSiteWindow *iface)
+{
+    NSContainer *This = NSEMBWNDS_THIS(iface);
+    return nsIWebBrowserChrome_Release(NSWBCHROME(This));
+}
+
+static nsresult NSAPI nsEmbeddingSiteWindow_SetDimensions(nsIEmbeddingSiteWindow *iface,
+        PRUint32 flags, PRInt32 x, PRInt32 y, PRInt32 cx, PRInt32 cy)
+{
+    NSContainer *This = NSEMBWNDS_THIS(iface);
+    WARN("(%p)->(%08lx %ld %ld %ld %ld)\n", This, flags, x, y, cx, cy);
+    return NS_ERROR_NOT_IMPLEMENTED;
+}
+
+static nsresult NSAPI nsEmbeddingSiteWindow_GetDimensions(nsIEmbeddingSiteWindow *iface,
+        PRUint32 flags, PRInt32 *x, PRInt32 *y, PRInt32 *cx, PRInt32 *cy)
+{
+    NSContainer *This = NSEMBWNDS_THIS(iface);
+    WARN("(%p)->(%08lx %p %p %p %p)\n", This, flags, x, y, cx, cy);
+    return NS_ERROR_NOT_IMPLEMENTED;
+}
+
+static nsresult NSAPI nsEmbeddingSiteWindow_SetFocus(nsIEmbeddingSiteWindow *iface)
+{
+    NSContainer *This = NSEMBWNDS_THIS(iface);
+    WARN("(%p)\n", This);
+    return NS_ERROR_NOT_IMPLEMENTED;
+}
+
+static nsresult NSAPI nsEmbeddingSiteWindow_GetVisibility(nsIEmbeddingSiteWindow *iface,
+        PRBool *aVisibility)
+{
+    NSContainer *This = NSEMBWNDS_THIS(iface);
+    WARN("(%p)->(%p)\n", This, aVisibility);
+    return NS_ERROR_NOT_IMPLEMENTED;
+}
+
+static nsresult NSAPI nsEmbeddingSiteWindow_SetVisibility(nsIEmbeddingSiteWindow *iface,
+        PRBool aVisibility)
+{
+    NSContainer *This = NSEMBWNDS_THIS(iface);
+    WARN("(%p)->(%x)\n", This, aVisibility);
+    return NS_ERROR_NOT_IMPLEMENTED;
+}
+
+static nsresult NSAPI nsEmbeddingSiteWindow_GetTitle(nsIEmbeddingSiteWindow *iface,
+        PRUnichar **aTitle)
+{
+    NSContainer *This = NSEMBWNDS_THIS(iface);
+    WARN("(%p)->(%p)\n", This, aTitle);
+    return NS_ERROR_NOT_IMPLEMENTED;
+}
+
+static nsresult NSAPI nsEmbeddingSiteWindow_SetTitle(nsIEmbeddingSiteWindow *iface,
+        const PRUnichar *aTitle)
+{
+    NSContainer *This = NSEMBWNDS_THIS(iface);
+    WARN("(%p)->(%s)\n", This, debugstr_w(aTitle));
+    return NS_ERROR_NOT_IMPLEMENTED;
+}
+
+static nsresult NSAPI nsEmbeddingSiteWindow_GetSiteWindow(nsIEmbeddingSiteWindow *iface,
+        void **aSiteWindow)
+{
+    NSContainer *This = NSEMBWNDS_THIS(iface);
+
+    TRACE("(%p)->(%p)\n", This, aSiteWindow);
+
+    *aSiteWindow = This->hwnd;
+    return NS_OK;
+}
+
+static const nsIEmbeddingSiteWindowVtbl nsEmbeddingSiteWindowVtbl = {
+    nsEmbeddingSiteWindow_QueryInterface,
+    nsEmbeddingSiteWindow_AddRef,
+    nsEmbeddingSiteWindow_Release,
+    nsEmbeddingSiteWindow_SetDimensions,
+    nsEmbeddingSiteWindow_GetDimensions,
+    nsEmbeddingSiteWindow_SetFocus,
+    nsEmbeddingSiteWindow_GetVisibility,
+    nsEmbeddingSiteWindow_SetVisibility,
+    nsEmbeddingSiteWindow_GetTitle,
+    nsEmbeddingSiteWindow_SetTitle,
+    nsEmbeddingSiteWindow_GetSiteWindow
+};
+
 void HTMLDocument_NSContainer_Init(HTMLDocument *This)
 {
     nsIWebBrowserSetup *wbsetup;
@@ -764,6 +872,7 @@ void HTMLDocument_NSContainer_Init(HTMLD
     This->nscontainer->lpWebBrowserChromeVtbl    = &nsWebBrowserChromeVtbl;
     This->nscontainer->lpContextMenuListenerVtbl = &nsContextMenuListenerVtbl;
     This->nscontainer->lpURIContentListenerVtbl  = &nsURIContentListenerVtbl;
+    This->nscontainer->lpEmbeddingSiteWindowVtbl = &nsEmbeddingSiteWindowVtbl;
 
     This->nscontainer->doc = This;
 
diff --git a/dlls/mshtml/nsiface.idl b/dlls/mshtml/nsiface.idl
index 1517ae6..dfdf4ee 100644
--- a/dlls/mshtml/nsiface.idl
+++ b/dlls/mshtml/nsiface.idl
@@ -433,3 +433,19 @@ interface nsIDOMMouseEvent : nsIDOMUIEve
             PRBool shiftKeyArg, PRBool metaKeyArg, PRUint16 buttonArg,
             nsIDOMEventTarget *relatedTargetArg);
 }
+
+[
+     object,
+     uuid(3e5432cd-9568-4bd1-8cbe-d50aba110743)
+]
+interface nsIEmbeddingSiteWindow : nsISupports
+{
+    nsresult SetDimensions(PRUint32 flags, PRInt32 x, PRInt32 y, PRInt32 cx, PRInt32 cy);
+    nsresult GetDimensions(PRUint32 flags, PRInt32 *x, PRInt32 *y, PRInt32 *cx, PRInt32 *cy);
+    nsresult SetFocus();
+    nsresult GetVisibility(PRBool *aVisibility);
+    nsresult SetVisibility(PRBool aVisibility);
+    nsresult GetTitle(PRUnichar **aTitle);
+    nsresult SetTitle(const PRUnichar *aTitle);
+    nsresult GetSiteWindow(void **aSiteWindow);
+}




More information about the wine-cvs mailing list