diff --git a/mozilla/content/xul/content/src/nsXULElement.cpp b/mozilla/content/xul/content/src/nsXULElement.cpp index e0e05ff99a0..01a1947433a 100644 --- a/mozilla/content/xul/content/src/nsXULElement.cpp +++ b/mozilla/content/xul/content/src/nsXULElement.cpp @@ -1125,16 +1125,12 @@ RDFElementImpl::GetScriptObject(nsIScriptContext* aContext, void** aScriptObject nsresult (*fn)(nsIScriptContext* aContext, nsISupports* aSupports, nsISupports* aParent, void** aReturn); -#if 0 // put this in once we get XPIDL interfaces if (mTag == kTreeAtom) { fn = NS_NewScriptXULTreeElement; } else { -#endif fn = NS_NewScriptXULElement; -#if 0 // put this in once we get XPIDL interfaces } -#endif rv = fn(aContext, (nsIDOMXULElement*) this, global, (void**) &mScriptObject); NS_RELEASE(global); diff --git a/mozilla/content/xul/document/src/nsXULDocument.cpp b/mozilla/content/xul/document/src/nsXULDocument.cpp index bab544ca9ca..ef5b82b92c0 100644 --- a/mozilla/content/xul/document/src/nsXULDocument.cpp +++ b/mozilla/content/xul/document/src/nsXULDocument.cpp @@ -2318,6 +2318,16 @@ XULDocumentImpl::GetStyleSheets(nsIDOMStyleSheetCollection** aStyleSheets) //////////////////////////////////////////////////////////////////////// // nsIDOMXULDocument interface +NS_IMETHODIMP +XULDocumentImpl::GetRdf(nsIRDFService** aRDFService) +{ + // XXX this is a temporary hack until the component manager starts + // to work. + return nsServiceManager::GetService(kRDFServiceCID, + nsIRDFService::GetIID(), + (nsISupports**) aRDFService); +} + NS_IMETHODIMP XULDocumentImpl::GetElementById(const nsString& aId, nsIDOMElement** aReturn) { @@ -2697,6 +2707,25 @@ XULDocumentImpl::GetScriptObject(nsIScriptContext *aContext, void** aScriptObjec if (nsnull == mScriptObject) { res = NS_NewScriptXULDocument(aContext, (nsISupports *)(nsIDOMXULDocument *)this, global, (void**)&mScriptObject); + +#if defined(XPIDL_JS_STUBS) + JSContext* cx = (JSContext*) aContext->GetNativeContext(); + nsIRDFNode::InitJSClass(cx); + nsIRDFResource::InitJSClass(cx); + nsIRDFLiteral::InitJSClass(cx); + nsIRDFDate::InitJSClass(cx); + nsIRDFInt::InitJSClass(cx); + nsIRDFCursor::InitJSClass(cx); + nsIRDFAssertionCursor::InitJSClass(cx); + nsIRDFArcsInCursor::InitJSClass(cx); + nsIRDFArcsOutCursor::InitJSClass(cx); + nsIRDFResourceCursor::InitJSClass(cx); + nsIRDFObserver::InitJSClass(cx); + nsIRDFDataSource::InitJSClass(cx); + nsIRDFCompositeDataSource::InitJSClass(cx); + nsIRDFService::InitJSClass(cx); +#endif + } *aScriptObject = mScriptObject; diff --git a/mozilla/dom/public/idl/xul/XULDocument.idl b/mozilla/dom/public/idl/xul/XULDocument.idl index a2b6390bc4c..37e050416fe 100644 --- a/mozilla/dom/public/idl/xul/XULDocument.idl +++ b/mozilla/dom/public/idl/xul/XULDocument.idl @@ -3,7 +3,9 @@ interface XULDocument : Document { /* IID: { 0x17ddd8c0, 0xc5f8, 0x11d2, \ { 0xa6, 0xae, 0x0, 0x10, 0x4b, 0xde, 0x60, 0x48 } } */ + readonly attribute xpidl nsIRDFService rdf; + Element getElementById(in DOMString id); - NodeList getElementsByAttribute(in DOMString name, in DOMString value); + NodeList getElementsByAttribute(in DOMString name, in DOMString value); }; diff --git a/mozilla/dom/public/xul/nsIDOMXULDocument.h b/mozilla/dom/public/xul/nsIDOMXULDocument.h index 170884a67e0..ecc9cdd46d0 100644 --- a/mozilla/dom/public/xul/nsIDOMXULDocument.h +++ b/mozilla/dom/public/xul/nsIDOMXULDocument.h @@ -25,6 +25,7 @@ #include "nsIScriptContext.h" #include "nsIDOMDocument.h" +class nsIRDFService; class nsIDOMElement; class nsIDOMNodeList; @@ -36,6 +37,8 @@ class nsIDOMXULDocument : public nsIDOMDocument { public: static const nsIID& GetIID() { static nsIID iid = NS_IDOMXULDOCUMENT_IID; return iid; } + NS_IMETHOD GetRdf(nsIRDFService** aRdf)=0; + NS_IMETHOD GetElementById(const nsString& aId, nsIDOMElement** aReturn)=0; NS_IMETHOD GetElementsByAttribute(const nsString& aName, const nsString& aValue, nsIDOMNodeList** aReturn)=0; @@ -43,12 +46,14 @@ public: #define NS_DECL_IDOMXULDOCUMENT \ + NS_IMETHOD GetRdf(nsIRDFService** aRdf); \ NS_IMETHOD GetElementById(const nsString& aId, nsIDOMElement** aReturn); \ NS_IMETHOD GetElementsByAttribute(const nsString& aName, const nsString& aValue, nsIDOMNodeList** aReturn); \ #define NS_FORWARD_IDOMXULDOCUMENT(_to) \ + NS_IMETHOD GetRdf(nsIRDFService** aRdf) { return _to##GetRdf(aRdf); } \ NS_IMETHOD GetElementById(const nsString& aId, nsIDOMElement** aReturn) { return _to##GetElementById(aId, aReturn); } \ NS_IMETHOD GetElementsByAttribute(const nsString& aName, const nsString& aValue, nsIDOMNodeList** aReturn) { return _to##GetElementsByAttribute(aName, aValue, aReturn); } \ diff --git a/mozilla/dom/src/xul/nsJSXULDocument.cpp b/mozilla/dom/src/xul/nsJSXULDocument.cpp index 024ae70825e..12959208d31 100644 --- a/mozilla/dom/src/xul/nsJSXULDocument.cpp +++ b/mozilla/dom/src/xul/nsJSXULDocument.cpp @@ -26,6 +26,7 @@ #include "nsIScriptGlobalObject.h" #include "nsIPtr.h" #include "nsString.h" +#include "nsIRDFService.h" #include "nsIDOMElement.h" #include "nsIDOMXULDocument.h" #include "nsIDOMNodeList.h" @@ -34,14 +35,22 @@ static NS_DEFINE_IID(kIScriptObjectOwnerIID, NS_ISCRIPTOBJECTOWNER_IID); static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); +static NS_DEFINE_IID(kIRDFServiceIID, NS_IRDFSERVICE_IID); static NS_DEFINE_IID(kIElementIID, NS_IDOMELEMENT_IID); static NS_DEFINE_IID(kIXULDocumentIID, NS_IDOMXULDOCUMENT_IID); static NS_DEFINE_IID(kINodeListIID, NS_IDOMNODELIST_IID); +NS_DEF_PTR(nsIRDFService); NS_DEF_PTR(nsIDOMElement); NS_DEF_PTR(nsIDOMXULDocument); NS_DEF_PTR(nsIDOMNodeList); +// +// XULDocument property ids +// +enum XULDocument_slots { + XULDOCUMENT_RDF = -1 +}; /***********************************************************************/ // @@ -59,7 +68,18 @@ GetXULDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) if (JSVAL_IS_INT(id)) { switch(JSVAL_TO_INT(id)) { - case 0: + case XULDOCUMENT_RDF: + { + nsIRDFService* prop; + if (NS_OK == a->GetRdf(&prop)) { + // get the js object + *vp = OBJECT_TO_JSVAL(nsIRDFService::GetJSObject(cx, prop)); + } + else { + return JS_FALSE; + } + break; + } default: return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); } @@ -230,6 +250,7 @@ JSClass XULDocumentClass = { // static JSPropertySpec XULDocumentProperties[] = { + {"rdf", XULDOCUMENT_RDF, JSPROP_ENUMERATE | JSPROP_READONLY}, {0} }; diff --git a/mozilla/rdf/content/public/idl/XULDocument.idl b/mozilla/rdf/content/public/idl/XULDocument.idl index a2b6390bc4c..37e050416fe 100644 --- a/mozilla/rdf/content/public/idl/XULDocument.idl +++ b/mozilla/rdf/content/public/idl/XULDocument.idl @@ -3,7 +3,9 @@ interface XULDocument : Document { /* IID: { 0x17ddd8c0, 0xc5f8, 0x11d2, \ { 0xa6, 0xae, 0x0, 0x10, 0x4b, 0xde, 0x60, 0x48 } } */ + readonly attribute xpidl nsIRDFService rdf; + Element getElementById(in DOMString id); - NodeList getElementsByAttribute(in DOMString name, in DOMString value); + NodeList getElementsByAttribute(in DOMString name, in DOMString value); }; diff --git a/mozilla/rdf/content/public/nsIDOMXULDocument.h b/mozilla/rdf/content/public/nsIDOMXULDocument.h index 170884a67e0..ecc9cdd46d0 100644 --- a/mozilla/rdf/content/public/nsIDOMXULDocument.h +++ b/mozilla/rdf/content/public/nsIDOMXULDocument.h @@ -25,6 +25,7 @@ #include "nsIScriptContext.h" #include "nsIDOMDocument.h" +class nsIRDFService; class nsIDOMElement; class nsIDOMNodeList; @@ -36,6 +37,8 @@ class nsIDOMXULDocument : public nsIDOMDocument { public: static const nsIID& GetIID() { static nsIID iid = NS_IDOMXULDOCUMENT_IID; return iid; } + NS_IMETHOD GetRdf(nsIRDFService** aRdf)=0; + NS_IMETHOD GetElementById(const nsString& aId, nsIDOMElement** aReturn)=0; NS_IMETHOD GetElementsByAttribute(const nsString& aName, const nsString& aValue, nsIDOMNodeList** aReturn)=0; @@ -43,12 +46,14 @@ public: #define NS_DECL_IDOMXULDOCUMENT \ + NS_IMETHOD GetRdf(nsIRDFService** aRdf); \ NS_IMETHOD GetElementById(const nsString& aId, nsIDOMElement** aReturn); \ NS_IMETHOD GetElementsByAttribute(const nsString& aName, const nsString& aValue, nsIDOMNodeList** aReturn); \ #define NS_FORWARD_IDOMXULDOCUMENT(_to) \ + NS_IMETHOD GetRdf(nsIRDFService** aRdf) { return _to##GetRdf(aRdf); } \ NS_IMETHOD GetElementById(const nsString& aId, nsIDOMElement** aReturn) { return _to##GetElementById(aId, aReturn); } \ NS_IMETHOD GetElementsByAttribute(const nsString& aName, const nsString& aValue, nsIDOMNodeList** aReturn) { return _to##GetElementsByAttribute(aName, aValue, aReturn); } \ diff --git a/mozilla/rdf/content/src/Makefile.in b/mozilla/rdf/content/src/Makefile.in index 7bc8c6775f2..203dab891a0 100644 --- a/mozilla/rdf/content/src/Makefile.in +++ b/mozilla/rdf/content/src/Makefile.in @@ -31,6 +31,7 @@ CPPSRCS = \ nsJSNodeObserver.cpp \ nsJSXULDocument.cpp \ nsJSXULElement.cpp \ + nsJSXULTreeElement.cpp \ nsRDFContentUtils.cpp \ nsRDFDOMNodeList.cpp \ nsRDFElement.cpp \ diff --git a/mozilla/rdf/content/src/makefile.win b/mozilla/rdf/content/src/makefile.win index b95f1df2ccd..faac642a8aa 100644 --- a/mozilla/rdf/content/src/makefile.win +++ b/mozilla/rdf/content/src/makefile.win @@ -35,6 +35,7 @@ CPP_OBJS=\ .\$(OBJDIR)\nsJSNodeObserver.obj \ .\$(OBJDIR)\nsJSXULDocument.obj \ .\$(OBJDIR)\nsJSXULElement.obj \ + .\$(OBJDIR)\nsJSXULTreeElement.obj \ .\$(OBJDIR)\nsRDFContentUtils.obj \ .\$(OBJDIR)\nsRDFDOMNodeList.obj \ .\$(OBJDIR)\nsRDFElement.obj \ @@ -42,7 +43,7 @@ CPP_OBJS=\ .\$(OBJDIR)\nsRDFTreeBuilder.obj \ .\$(OBJDIR)\nsRDFXULBuilder.obj \ .\$(OBJDIR)\nsXULDocument.obj \ - .\$(OBJDIR)\nsXULDocumentInfo.obj \ + .\$(OBJDIR)\nsXULDocumentInfo.obj \ .\$(OBJDIR)\nsXULSortService.obj \ .\$(OBJDIR)\nsXULTreeElement.obj \ $(NULL) diff --git a/mozilla/rdf/content/src/nsJSXULDocument.cpp b/mozilla/rdf/content/src/nsJSXULDocument.cpp index 024ae70825e..12959208d31 100644 --- a/mozilla/rdf/content/src/nsJSXULDocument.cpp +++ b/mozilla/rdf/content/src/nsJSXULDocument.cpp @@ -26,6 +26,7 @@ #include "nsIScriptGlobalObject.h" #include "nsIPtr.h" #include "nsString.h" +#include "nsIRDFService.h" #include "nsIDOMElement.h" #include "nsIDOMXULDocument.h" #include "nsIDOMNodeList.h" @@ -34,14 +35,22 @@ static NS_DEFINE_IID(kIScriptObjectOwnerIID, NS_ISCRIPTOBJECTOWNER_IID); static NS_DEFINE_IID(kIJSScriptObjectIID, NS_IJSSCRIPTOBJECT_IID); static NS_DEFINE_IID(kIScriptGlobalObjectIID, NS_ISCRIPTGLOBALOBJECT_IID); +static NS_DEFINE_IID(kIRDFServiceIID, NS_IRDFSERVICE_IID); static NS_DEFINE_IID(kIElementIID, NS_IDOMELEMENT_IID); static NS_DEFINE_IID(kIXULDocumentIID, NS_IDOMXULDOCUMENT_IID); static NS_DEFINE_IID(kINodeListIID, NS_IDOMNODELIST_IID); +NS_DEF_PTR(nsIRDFService); NS_DEF_PTR(nsIDOMElement); NS_DEF_PTR(nsIDOMXULDocument); NS_DEF_PTR(nsIDOMNodeList); +// +// XULDocument property ids +// +enum XULDocument_slots { + XULDOCUMENT_RDF = -1 +}; /***********************************************************************/ // @@ -59,7 +68,18 @@ GetXULDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) if (JSVAL_IS_INT(id)) { switch(JSVAL_TO_INT(id)) { - case 0: + case XULDOCUMENT_RDF: + { + nsIRDFService* prop; + if (NS_OK == a->GetRdf(&prop)) { + // get the js object + *vp = OBJECT_TO_JSVAL(nsIRDFService::GetJSObject(cx, prop)); + } + else { + return JS_FALSE; + } + break; + } default: return nsJSUtils::nsCallJSScriptObjectGetProperty(a, cx, id, vp); } @@ -230,6 +250,7 @@ JSClass XULDocumentClass = { // static JSPropertySpec XULDocumentProperties[] = { + {"rdf", XULDOCUMENT_RDF, JSPROP_ENUMERATE | JSPROP_READONLY}, {0} }; diff --git a/mozilla/rdf/content/src/nsRDFElement.cpp b/mozilla/rdf/content/src/nsRDFElement.cpp index e0e05ff99a0..01a1947433a 100644 --- a/mozilla/rdf/content/src/nsRDFElement.cpp +++ b/mozilla/rdf/content/src/nsRDFElement.cpp @@ -1125,16 +1125,12 @@ RDFElementImpl::GetScriptObject(nsIScriptContext* aContext, void** aScriptObject nsresult (*fn)(nsIScriptContext* aContext, nsISupports* aSupports, nsISupports* aParent, void** aReturn); -#if 0 // put this in once we get XPIDL interfaces if (mTag == kTreeAtom) { fn = NS_NewScriptXULTreeElement; } else { -#endif fn = NS_NewScriptXULElement; -#if 0 // put this in once we get XPIDL interfaces } -#endif rv = fn(aContext, (nsIDOMXULElement*) this, global, (void**) &mScriptObject); NS_RELEASE(global); diff --git a/mozilla/rdf/content/src/nsXULDocument.cpp b/mozilla/rdf/content/src/nsXULDocument.cpp index bab544ca9ca..ef5b82b92c0 100644 --- a/mozilla/rdf/content/src/nsXULDocument.cpp +++ b/mozilla/rdf/content/src/nsXULDocument.cpp @@ -2318,6 +2318,16 @@ XULDocumentImpl::GetStyleSheets(nsIDOMStyleSheetCollection** aStyleSheets) //////////////////////////////////////////////////////////////////////// // nsIDOMXULDocument interface +NS_IMETHODIMP +XULDocumentImpl::GetRdf(nsIRDFService** aRDFService) +{ + // XXX this is a temporary hack until the component manager starts + // to work. + return nsServiceManager::GetService(kRDFServiceCID, + nsIRDFService::GetIID(), + (nsISupports**) aRDFService); +} + NS_IMETHODIMP XULDocumentImpl::GetElementById(const nsString& aId, nsIDOMElement** aReturn) { @@ -2697,6 +2707,25 @@ XULDocumentImpl::GetScriptObject(nsIScriptContext *aContext, void** aScriptObjec if (nsnull == mScriptObject) { res = NS_NewScriptXULDocument(aContext, (nsISupports *)(nsIDOMXULDocument *)this, global, (void**)&mScriptObject); + +#if defined(XPIDL_JS_STUBS) + JSContext* cx = (JSContext*) aContext->GetNativeContext(); + nsIRDFNode::InitJSClass(cx); + nsIRDFResource::InitJSClass(cx); + nsIRDFLiteral::InitJSClass(cx); + nsIRDFDate::InitJSClass(cx); + nsIRDFInt::InitJSClass(cx); + nsIRDFCursor::InitJSClass(cx); + nsIRDFAssertionCursor::InitJSClass(cx); + nsIRDFArcsInCursor::InitJSClass(cx); + nsIRDFArcsOutCursor::InitJSClass(cx); + nsIRDFResourceCursor::InitJSClass(cx); + nsIRDFObserver::InitJSClass(cx); + nsIRDFDataSource::InitJSClass(cx); + nsIRDFCompositeDataSource::InitJSClass(cx); + nsIRDFService::InitJSClass(cx); +#endif + } *aScriptObject = mScriptObject; diff --git a/mozilla/rdf/content/src/nsXULElement.cpp b/mozilla/rdf/content/src/nsXULElement.cpp index e0e05ff99a0..01a1947433a 100644 --- a/mozilla/rdf/content/src/nsXULElement.cpp +++ b/mozilla/rdf/content/src/nsXULElement.cpp @@ -1125,16 +1125,12 @@ RDFElementImpl::GetScriptObject(nsIScriptContext* aContext, void** aScriptObject nsresult (*fn)(nsIScriptContext* aContext, nsISupports* aSupports, nsISupports* aParent, void** aReturn); -#if 0 // put this in once we get XPIDL interfaces if (mTag == kTreeAtom) { fn = NS_NewScriptXULTreeElement; } else { -#endif fn = NS_NewScriptXULElement; -#if 0 // put this in once we get XPIDL interfaces } -#endif rv = fn(aContext, (nsIDOMXULElement*) this, global, (void**) &mScriptObject); NS_RELEASE(global);