Jacek Caban : mshtml: Added get_compatMode implementation.
Alexandre Julliard
julliard at winehq.org
Thu Sep 27 09:27:25 CDT 2007
Module: wine
Branch: master
Commit: cb776f7d5bd221119bc785e240f1b56450a78ced
URL: http://source.winehq.org/git/wine.git/?a=commit;h=cb776f7d5bd221119bc785e240f1b56450a78ced
Author: Jacek Caban <jacek at codeweavers.com>
Date: Wed Sep 26 20:44:14 2007 +0200
mshtml: Added get_compatMode implementation.
---
dlls/mshtml/htmldoc5.c | 30 ++++++++++++++++++++++++++++--
dlls/mshtml/nsiface.idl | 44 ++++++++++++++++++++++++++++++++++++++++++++
dlls/mshtml/tests/dom.c | 19 +++++++++++++++++++
3 files changed, 91 insertions(+), 2 deletions(-)
diff --git a/dlls/mshtml/htmldoc5.c b/dlls/mshtml/htmldoc5.c
index a91118e..95d76f3 100644
--- a/dlls/mshtml/htmldoc5.c
+++ b/dlls/mshtml/htmldoc5.c
@@ -220,8 +220,34 @@ static HRESULT WINAPI HTMLDocument5_get_onbeforedeactivate(IHTMLDocument5 *iface
static HRESULT WINAPI HTMLDocument5_get_compatMode(IHTMLDocument5 *iface, BSTR *p)
{
HTMLDocument *This = HTMLDOC5_THIS(iface);
- FIXME("(%p)->(%p)\n", This, p);
- return E_NOTIMPL;
+ nsIDOMDocument *nsdoc;
+ nsIDOMNSHTMLDocument *nshtmldoc;
+ nsAString mode_str;
+ const PRUnichar *mode;
+ nsresult nsres;
+
+ TRACE("(%p)->(%p)\n", This, p);
+
+ nsres = nsIWebNavigation_GetDocument(This->nscontainer->navigation, &nsdoc);
+ if(NS_FAILED(nsres))
+ ERR("GetDocument failed: %08x\n", nsres);
+
+ nsres = nsIDOMDocument_QueryInterface(nsdoc, &IID_nsIDOMNSHTMLDocument, (void**)&nshtmldoc);
+ nsIDOMDocument_Release(nsdoc);
+ if(NS_FAILED(nsres)) {
+ ERR("Could not get nsIDOMNSHTMLDocument: %08x\n", nsres);
+ return S_OK;
+ }
+
+ nsAString_Init(&mode_str, NULL);
+ nsIDOMNSHTMLDocument_GetCompatMode(nshtmldoc, &mode_str);
+ nsIDOMNSHTMLDocument_Release(nshtmldoc);
+
+ nsAString_GetData(&mode_str, &mode, NULL);
+ *p = SysAllocString(mode);
+ nsAString_Finish(&mode_str);
+
+ return S_OK;
}
#undef HTMLDOC5_THIS
diff --git a/dlls/mshtml/nsiface.idl b/dlls/mshtml/nsiface.idl
index c79b17e..1d36197 100644
--- a/dlls/mshtml/nsiface.idl
+++ b/dlls/mshtml/nsiface.idl
@@ -836,6 +836,50 @@ interface nsIDOMHTMLDocument : nsIDOMDocument
[
object,
+ uuid(79beb289-3644-4b54-9432-9fb993945629)
+ /* NOT_FROZEN */
+]
+interface nsIDOMNSHTMLDocument : nsISupports
+{
+ nsresult GetWidth(PRInt32 *aWidth);
+ nsresult GetHeight(PRInt32 *aHeight);
+ nsresult GetAlinkColor(nsAString *aAlinkColor);
+ nsresult SetAlinkColor(const nsAString *aAlinkColor);
+ nsresult GetLinkColor(nsAString *aLinkColor);
+ nsresult SetLinkColor(const nsAString *aLinkColor);
+ nsresult GetVlinkColor(nsAString *aVlinkColor);
+ nsresult SetVlinkColor(const nsAString *aVlinkColor);
+ nsresult GetBgColor(nsAString *aBgColor);
+ nsresult SetBgColor(const nsAString *aBgColor);
+ nsresult GetFgColor(nsAString *aFgColor);
+ nsresult SetFgColor(const nsAString *aFgColor);
+ nsresult GetDomain(nsAString *aDomain);
+ nsresult SetDomain(const nsAString *aDomain);
+ nsresult GetEmbeds(nsIDOMHTMLCollection **aEmbeds);
+ nsresult GetSelection(nsAString *_retval);
+ nsresult Open(nsIDOMDocument **_retval);
+ nsresult Write();
+ nsresult Writeln();
+ nsresult Clear();
+ nsresult CaptureEvents(PRInt32 eventFlags);
+ nsresult ReleaseEvents(PRInt32 eventFlags);
+ nsresult RouteEvent(nsIDOMEvent *evt);
+ nsresult GetCompatMode(nsAString *aCompatMode);
+ nsresult GetPlugins(nsIDOMHTMLCollection **aPlugins);
+ nsresult GetDesignMode(nsAString *aDesignMode);
+ nsresult SetDesignMode(const nsAString *aDesignMode);
+ nsresult ExecCommand(const nsAString *commandID, PRBool doShowUI, const nsAString *value, PRBool *_retval);
+ nsresult ExecCommandShowHelp(const nsAString *commandID, PRBool *_retval);
+ nsresult QueryCommandEnabled(const nsAString *commandID, PRBool *_retval);
+ nsresult QueryCommandIndeterm(const nsAString *commandID, PRBool *_retval);
+ nsresult QueryCommandState(const nsAString *commandID, PRBool *_retval);
+ nsresult QueryCommandSupported(const nsAString *commandID, PRBool *_retval);
+ nsresult QueryCommandText(const nsAString *commandID, nsAString *_retval);
+ nsresult QueryCommandValue(const nsAString *commandID, nsAString *_retval);
+}
+
+[
+ object,
uuid(3d9f4973-dd2e-48f5-b5f7-2634e09eadd9)
/* FROZEN */
]
diff --git a/dlls/mshtml/tests/dom.c b/dlls/mshtml/tests/dom.c
index 80675f5..3c7a18a 100644
--- a/dlls/mshtml/tests/dom.c
+++ b/dlls/mshtml/tests/dom.c
@@ -347,6 +347,24 @@ static void test_txtrange(IHTMLDocument2 *doc)
IHTMLTxtRange_Release(body_range);
}
+static void test_compatmode(IHTMLDocument2 *doc)
+{
+ IHTMLDocument5 *doc5;
+ BSTR mode;
+ HRESULT hres;
+
+ hres = IHTMLDocument2_QueryInterface(doc, &IID_IHTMLDocument5, (void**)&doc5);
+ ok(hres == S_OK, "Could not get IHTMLDocument5 interface: %08x\n", hres);
+ if(FAILED(hres))
+ return;
+
+ hres = IHTMLDocument5_get_compatMode(doc5, &mode);
+ IHTMLDocument5_Release(doc5);
+ ok(hres == S_OK, "get_compatMode failed: %08x\n", hres);
+ ok(!strcmp_wa(mode, "BackCompat"), "compatMode=%s\n", dbgstr_w(mode));
+ SysFreeString(mode);
+}
+
static void test_default_style(IHTMLStyle *style)
{
VARIANT_BOOL b;
@@ -431,6 +449,7 @@ static void test_defaults(IHTMLDocument2 *doc)
ok(hres == S_OK, "get_style failed: %08x\n", hres);
test_default_style(style);
+ test_compatmode(doc);
IHTMLStyle_Release(style);
More information about the wine-cvs
mailing list