Jacek Caban : mshtml: Added get_documentElement implementation.
Alexandre Julliard
julliard at wine.codeweavers.com
Mon Mar 6 04:50:58 CST 2006
Module: wine
Branch: refs/heads/master
Commit: 6ef5f9556215ac4b3426028cc7156eaa133d20ef
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=6ef5f9556215ac4b3426028cc7156eaa133d20ef
Author: Jacek Caban <jacek at codeweavers.com>
Date: Sun Mar 5 20:41:18 2006 +0100
mshtml: Added get_documentElement implementation.
---
dlls/mshtml/htmldoc3.c | 31 +++++++++++++++++++++++++++----
dlls/mshtml/nsiface.idl | 39 ++++++++++++++++++++++++++++++++++++++-
2 files changed, 65 insertions(+), 5 deletions(-)
diff --git a/dlls/mshtml/htmldoc3.c b/dlls/mshtml/htmldoc3.c
index bc74509..9c12693 100644
--- a/dlls/mshtml/htmldoc3.c
+++ b/dlls/mshtml/htmldoc3.c
@@ -112,11 +112,34 @@ static HRESULT WINAPI HTMLDocument3_crea
return E_NOTIMPL;
}
-static HRESULT WINAPI HTMLDocument3_documentElement(IHTMLDocument3 *iface, IHTMLElement **p)
+static HRESULT WINAPI HTMLDocument3_get_documentElement(IHTMLDocument3 *iface, IHTMLElement **p)
{
HTMLDocument *This = HTMLDOC3_THIS(iface);
- FIXME("(%p)->(%p)\n", This, p);
- return E_NOTIMPL;
+ nsIDOMDocument *nsdoc;
+ HTMLDOMNode *node;
+ nsresult nsres;
+
+ TRACE("(%p)->(%p)\n", This, p);
+
+ if(!This->nscontainer) {
+ *p = NULL;
+ return S_OK;
+ }
+
+ nsres = nsIWebNavigation_GetDocument(This->nscontainer->navigation, &nsdoc);
+ if(NS_FAILED(nsres))
+ ERR("GetDocument failed: %08lx\n", nsres);
+
+ if(nsdoc) {
+ node = get_node(This, (nsIDOMNode*)nsdoc);
+ nsIDOMDocument_Release(nsdoc);
+
+ IHTMLDOMNode_QueryInterface(HTMLDOMNODE(node), &IID_IHTMLElement, (void**)p);
+ }else {
+ *p = NULL;
+ }
+
+ return S_OK;
}
static HRESULT WINAPI HTMLDocument3_uniqueID(IHTMLDocument3 *iface, BSTR *p)
@@ -402,7 +425,7 @@ static const IHTMLDocument3Vtbl HTMLDocu
HTMLDocument3_releaseCapture,
HTMLDocument3_recalc,
HTMLDocument3_createTextNode,
- HTMLDocument3_documentElement,
+ HTMLDocument3_get_documentElement,
HTMLDocument3_uniqueID,
HTMLDocument3_attachEvent,
HTMLDocument3_detachEvent,
diff --git a/dlls/mshtml/nsiface.idl b/dlls/mshtml/nsiface.idl
index fabe6bb..7aa4acd 100644
--- a/dlls/mshtml/nsiface.idl
+++ b/dlls/mshtml/nsiface.idl
@@ -55,6 +55,7 @@ typedef nsStringContainer nsAString;
interface nsIWebBrowserChrome;
interface nsILoadGroup;
interface nsIDOMNode;
+interface nsIDOMDocument;
[
object,
@@ -69,7 +70,6 @@ interface nsISupports
/* Currently we don't need a full declaration of these interfaces */
typedef nsISupports nsIWeakReference;
-typedef nsISupports nsIDOMDocument;
typedef nsISupports nsISHistory;
typedef nsISupports nsISimpleEnumerator;
typedef nsISupports nsIWidget;
@@ -86,6 +86,14 @@ typedef nsISupports nsIPrompt;
typedef nsISupports nsIAuthPrompt;
typedef nsISupports nsIDOMNamedNodeMap;
typedef nsISupports nsIDOMAttr;
+typedef nsISupports nsIDOMDocumentType;
+typedef nsISupports nsIDOMDOMImplementation;
+typedef nsISupports nsIDOMDocumentFragment;
+typedef nsISupports nsIDOMText;
+typedef nsISupports nsIDOMComment;
+typedef nsISupports nsIDOMCDATASection;
+typedef nsISupports nsIDOMProcessingInstruction;
+typedef nsISupports nsIDOMEntityReference;
[
object,
@@ -394,6 +402,35 @@ interface nsIDOMHTMLElement : nsIDOMElem
[
object,
+ uuid(a6cf9075-15b3-11d2-932e-00805f8add32)
+]
+interface nsIDOMDocument : nsIDOMNode
+{
+ nsresult GetDoctype(nsIDOMDocumentType **aDoctype);
+ nsresult GetImplementation(nsIDOMDOMImplementation **aImplementation);
+ nsresult GetDocumentElement(nsIDOMElement **aDocumentElement);
+ nsresult CreateElement(const nsAString *tagName, nsIDOMElement **_retval);
+ nsresult CreateDocumentFragment(nsIDOMDocumentFragment **_retval);
+ nsresult CreateTextNode(const nsAString *data, nsIDOMText **_retval);
+ nsresult CreateComment(const nsAString *data, nsIDOMComment **_retval);
+ nsresult CreateCDATASection(const nsAString *data, nsIDOMCDATASection **_retval);
+ nsresult CreateProcessingInstruction(const nsAString *target, const nsAString *data,
+ nsIDOMProcessingInstruction **_retval);
+ nsresult CreateAttribute(const nsAString *name, nsIDOMAttr **_retval);
+ nsresult CreateEntityReference(const nsAString *name, nsIDOMEntityReference **_retval);
+ nsresult GetElementsByTagName(const nsAString *tagname, nsIDOMNodeList **_retval);
+ nsresult ImportNode(nsIDOMNode *importedNode, PRBool deep, nsIDOMNode **_retval);
+ nsresult CreateElementNS(const nsAString *namespaceURI, const nsAString *qualifiedName,
+ nsIDOMElement **_retval);
+ nsresult CreateAttributeNS(const nsAString *namespaceURI, const nsAString *qualifiedName,
+ nsIDOMAttr **_retval);
+ nsresult GetElementsByTagNameNS(const nsAString *namespaceURI, const nsAString *localName,
+ nsIDOMNodeList **_retval);
+ nsresult GetElementById(const nsAString *elementId, nsIDOMElement **_retval);
+}
+
+[
+ object,
uuid(a6cf906b-15b3-11d2-932e-00805f8add32)
]
interface nsIDOMWindow : nsISupports
More information about the wine-cvs
mailing list