From d564d38b2fd7b8e584174102fe46311592408360 Mon Sep 17 00:00:00 2001 From: "peterl%netscape.com" Date: Tue, 18 May 1999 23:16:26 +0000 Subject: [PATCH] added css loader support git-svn-id: svn://10.0.0.236/trunk@32156 18797224-902f-48f8-a5cc-f745e15eee43 --- .../xml/document/public/nsIXMLDocument.h | 1 + .../xml/document/src/nsXMLDocument.cpp | 20 +++++++++++++++++++ .../content/xml/document/src/nsXMLDocument.h | 4 ++++ .../xml/document/public/nsIXMLDocument.h | 1 + .../layout/xml/document/src/nsXMLDocument.cpp | 20 +++++++++++++++++++ .../layout/xml/document/src/nsXMLDocument.h | 4 ++++ 6 files changed, 50 insertions(+) diff --git a/mozilla/content/xml/document/public/nsIXMLDocument.h b/mozilla/content/xml/document/public/nsIXMLDocument.h index cca3881af90..7e37a824794 100644 --- a/mozilla/content/xml/document/public/nsIXMLDocument.h +++ b/mozilla/content/xml/document/public/nsIXMLDocument.h @@ -24,6 +24,7 @@ #include "nsString.h" class nsIAtom; +class nsICSSLoader; #define NS_IXMLDOCUMENT_IID \ { 0xa6cf90ca, 0x15b3, 0x11d2, \ diff --git a/mozilla/content/xml/document/src/nsXMLDocument.cpp b/mozilla/content/xml/document/src/nsXMLDocument.cpp index ab98bb1380a..e21b35acf77 100644 --- a/mozilla/content/xml/document/src/nsXMLDocument.cpp +++ b/mozilla/content/xml/document/src/nsXMLDocument.cpp @@ -42,6 +42,7 @@ #include "nsIDOMProcessingInstruction.h" #include "nsExpatDTD.h" #include "nsINameSpaceManager.h" +#include "nsICSSLoader.h" // XXX The XML world depends on the html atoms #include "nsHTMLAtoms.h" @@ -80,6 +81,7 @@ nsXMLDocument::nsXMLDocument() mParser = nsnull; mAttrStyleSheet = nsnull; mInlineStyleSheet = nsnull; + mCSSLoader = nsnull; // XXX The XML world depends on the html atoms nsHTMLAtoms::AddrefAtoms(); @@ -100,6 +102,7 @@ nsXMLDocument::~nsXMLDocument() mInlineStyleSheet->SetOwningDocument(nsnull); NS_RELEASE(mInlineStyleSheet); } + NS_IF_RELEASE(mCSSLoader); #ifdef INCLUDE_XUL nsXULAtoms::ReleaseAtoms(); #endif @@ -290,6 +293,12 @@ void nsXMLDocument::InternalAddStyleSheet(nsIStyleSheet* aSheet) // subclass ho } } +void +nsXMLDocument::InternalInsertStyleSheetAt(nsIStyleSheet* aSheet, PRInt32 aIndex) +{ + mStyleSheets.InsertElementAt(aSheet, aIndex + 1); // offset one for the attr style sheet +} + // nsIDOMDocument interface NS_IMETHODIMP nsXMLDocument::GetDoctype(nsIDOMDocumentType** aDocumentType) @@ -448,4 +457,15 @@ nsXMLDocument::GetContentById(const nsString& aName, nsIContent** aContent) } +NS_IMETHODIMP +nsXMLDocument::GetCSSLoader(nsICSSLoader*& aLoader) +{ + nsresult result = NS_OK; + if (! mCSSLoader) { + result = NS_NewCSSLoader(this, &mCSSLoader); + } + aLoader = mCSSLoader; + NS_IF_ADDREF(aLoader); + return result; +} diff --git a/mozilla/content/xml/document/src/nsXMLDocument.h b/mozilla/content/xml/document/src/nsXMLDocument.h index d6aefd2b13b..63a937df1fb 100644 --- a/mozilla/content/xml/document/src/nsXMLDocument.h +++ b/mozilla/content/xml/document/src/nsXMLDocument.h @@ -26,6 +26,7 @@ class nsIParser; class nsIDOMNode; +class nsICSSLoader; class nsXMLDocument : public nsMarkupDocument, @@ -67,9 +68,11 @@ public: // nsIHTMLContentContainer NS_IMETHOD GetAttributeStyleSheet(nsIHTMLStyleSheet** aResult); NS_IMETHOD GetInlineStyleSheet(nsIHTMLCSSStyleSheet** aResult); + NS_IMETHOD GetCSSLoader(nsICSSLoader*& aLoader); protected: virtual void InternalAddStyleSheet(nsIStyleSheet* aSheet); // subclass hook for sheet ordering + virtual void InternalInsertStyleSheetAt(nsIStyleSheet* aSheet, PRInt32 aIndex); virtual nsresult Reset(nsIURL* aUrl); // For HTML elements in our content model @@ -77,6 +80,7 @@ protected: nsIHTMLCSSStyleSheet* mInlineStyleSheet; nsIParser *mParser; + nsICSSLoader* mCSSLoader; }; diff --git a/mozilla/layout/xml/document/public/nsIXMLDocument.h b/mozilla/layout/xml/document/public/nsIXMLDocument.h index cca3881af90..7e37a824794 100644 --- a/mozilla/layout/xml/document/public/nsIXMLDocument.h +++ b/mozilla/layout/xml/document/public/nsIXMLDocument.h @@ -24,6 +24,7 @@ #include "nsString.h" class nsIAtom; +class nsICSSLoader; #define NS_IXMLDOCUMENT_IID \ { 0xa6cf90ca, 0x15b3, 0x11d2, \ diff --git a/mozilla/layout/xml/document/src/nsXMLDocument.cpp b/mozilla/layout/xml/document/src/nsXMLDocument.cpp index ab98bb1380a..e21b35acf77 100644 --- a/mozilla/layout/xml/document/src/nsXMLDocument.cpp +++ b/mozilla/layout/xml/document/src/nsXMLDocument.cpp @@ -42,6 +42,7 @@ #include "nsIDOMProcessingInstruction.h" #include "nsExpatDTD.h" #include "nsINameSpaceManager.h" +#include "nsICSSLoader.h" // XXX The XML world depends on the html atoms #include "nsHTMLAtoms.h" @@ -80,6 +81,7 @@ nsXMLDocument::nsXMLDocument() mParser = nsnull; mAttrStyleSheet = nsnull; mInlineStyleSheet = nsnull; + mCSSLoader = nsnull; // XXX The XML world depends on the html atoms nsHTMLAtoms::AddrefAtoms(); @@ -100,6 +102,7 @@ nsXMLDocument::~nsXMLDocument() mInlineStyleSheet->SetOwningDocument(nsnull); NS_RELEASE(mInlineStyleSheet); } + NS_IF_RELEASE(mCSSLoader); #ifdef INCLUDE_XUL nsXULAtoms::ReleaseAtoms(); #endif @@ -290,6 +293,12 @@ void nsXMLDocument::InternalAddStyleSheet(nsIStyleSheet* aSheet) // subclass ho } } +void +nsXMLDocument::InternalInsertStyleSheetAt(nsIStyleSheet* aSheet, PRInt32 aIndex) +{ + mStyleSheets.InsertElementAt(aSheet, aIndex + 1); // offset one for the attr style sheet +} + // nsIDOMDocument interface NS_IMETHODIMP nsXMLDocument::GetDoctype(nsIDOMDocumentType** aDocumentType) @@ -448,4 +457,15 @@ nsXMLDocument::GetContentById(const nsString& aName, nsIContent** aContent) } +NS_IMETHODIMP +nsXMLDocument::GetCSSLoader(nsICSSLoader*& aLoader) +{ + nsresult result = NS_OK; + if (! mCSSLoader) { + result = NS_NewCSSLoader(this, &mCSSLoader); + } + aLoader = mCSSLoader; + NS_IF_ADDREF(aLoader); + return result; +} diff --git a/mozilla/layout/xml/document/src/nsXMLDocument.h b/mozilla/layout/xml/document/src/nsXMLDocument.h index d6aefd2b13b..63a937df1fb 100644 --- a/mozilla/layout/xml/document/src/nsXMLDocument.h +++ b/mozilla/layout/xml/document/src/nsXMLDocument.h @@ -26,6 +26,7 @@ class nsIParser; class nsIDOMNode; +class nsICSSLoader; class nsXMLDocument : public nsMarkupDocument, @@ -67,9 +68,11 @@ public: // nsIHTMLContentContainer NS_IMETHOD GetAttributeStyleSheet(nsIHTMLStyleSheet** aResult); NS_IMETHOD GetInlineStyleSheet(nsIHTMLCSSStyleSheet** aResult); + NS_IMETHOD GetCSSLoader(nsICSSLoader*& aLoader); protected: virtual void InternalAddStyleSheet(nsIStyleSheet* aSheet); // subclass hook for sheet ordering + virtual void InternalInsertStyleSheetAt(nsIStyleSheet* aSheet, PRInt32 aIndex); virtual nsresult Reset(nsIURL* aUrl); // For HTML elements in our content model @@ -77,6 +80,7 @@ protected: nsIHTMLCSSStyleSheet* mInlineStyleSheet; nsIParser *mParser; + nsICSSLoader* mCSSLoader; };