From 75f67b7a05c48348d35b1e5336dbfbb5e2763e39 Mon Sep 17 00:00:00 2001 From: "peterl%netscape.com" Date: Wed, 7 Jul 1999 01:32:28 +0000 Subject: [PATCH] split attributes into mapped and unmapped parts --- content/html/style/src/nsIHTMLAttributes.h | 61 +++++++++++++++++----- layout/html/style/src/nsIHTMLAttributes.h | 61 +++++++++++++++++----- layout/html/style/src/nsIHTMLStyleSheet.h | 7 +++ 3 files changed, 101 insertions(+), 28 deletions(-) diff --git a/content/html/style/src/nsIHTMLAttributes.h b/content/html/style/src/nsIHTMLAttributes.h index 1a2ef1f1983e..9362ea9191f9 100644 --- a/content/html/style/src/nsIHTMLAttributes.h +++ b/content/html/style/src/nsIHTMLAttributes.h @@ -32,16 +32,30 @@ class nsIHTMLStyleSheet; {0xa18f85f0, 0xc058, 0x11d1, \ {0x80, 0x31, 0x00, 0x60, 0x08, 0x15, 0x9b, 0x5a}} +// IID for the nsIHTMLMappedAttributes interface {0fdd27a0-2e7b-11d3-8060-006008159b5a} +#define NS_IHTML_MAPPED_ATTRIBUTES_IID \ +{0x0fdd27a0, 0x2e7b, 0x11d3, \ + {0x80, 0x60, 0x00, 0x60, 0x08, 0x15, 0x9b, 0x5a}} class nsIHTMLAttributes : public nsISupports { public: - NS_IMETHOD SetAttribute(nsIAtom* aAttribute, const nsHTMLValue& aValue, - PRInt32& aAttrCount) = 0; + NS_DEFINE_STATIC_IID_ACCESSOR(NS_IHTML_ATTRIBUTES_IID); + + NS_IMETHOD SetAttributeFor(nsIAtom* aAttribute, const nsHTMLValue& aValue, + PRBool aMappedToStyle, + nsIHTMLContent* aContent, + nsIHTMLStyleSheet* aSheet, + PRInt32& aAttrCount) = 0; // this string value version lets you avoid an extra string copy, // the value is still stored in a nsHTMLValue - NS_IMETHOD SetAttribute(nsIAtom* aAttribute, const nsString& aValue, - PRInt32& aAttrCount) = 0; - NS_IMETHOD UnsetAttribute(nsIAtom* aAttribute, PRInt32& aAttrCount) = 0; + NS_IMETHOD SetAttributeFor(nsIAtom* aAttribute, const nsString& aValue, + PRBool aMappedToStyle, + nsIHTMLContent* aContent, + nsIHTMLStyleSheet* aSheet) = 0; + NS_IMETHOD UnsetAttributeFor(nsIAtom* aAttribute, + nsIHTMLContent* aContent, + nsIHTMLStyleSheet* aSheet, + PRInt32& aAttrCount) = 0; NS_IMETHOD GetAttribute(nsIAtom* aAttribute, nsHTMLValue& aValue) const = 0; @@ -50,30 +64,49 @@ public: nsIAtom*& aName) const = 0; NS_IMETHOD GetAttributeCount(PRInt32& aAttrCount) const = 0; - NS_IMETHOD Equals(const nsIHTMLAttributes* aAttributes, PRBool& aResult) const = 0; - NS_IMETHOD HashValue(PRUint32& aValue) const = 0; NS_IMETHOD GetID(nsIAtom*& aResult) const = 0; NS_IMETHOD GetClasses(nsVoidArray& aArray) const = 0; NS_IMETHOD HasClass(nsIAtom* aClass) const = 0; + NS_IMETHOD Clone(nsIHTMLAttributes** aInstancePtrResult) const = 0; + + NS_IMETHOD SetStyleSheet(nsIHTMLStyleSheet* aSheet) = 0; + + NS_IMETHOD GetMappedAttributeStyleRules(nsISupportsArray* aArray) const = 0; + +#ifdef UNIQUE_ATTR_SUPPORT + NS_IMETHOD Equals(const nsIHTMLAttributes* aAttributes, PRBool& aResult) const = 0; + NS_IMETHOD HashValue(PRUint32& aValue) const = 0; + NS_IMETHOD AddContentRef(void) = 0; NS_IMETHOD ReleaseContentRef(void) = 0; NS_IMETHOD GetContentRefCount(PRInt32& aCount) const = 0; - NS_IMETHOD Clone(nsIHTMLAttributes** aInstancePtrResult) const = 0; NS_IMETHOD Reset(void) = 0; - NS_IMETHOD SetMappingFunctions(nsMapAttributesFunc aFontMapFunc, nsMapAttributesFunc aMapFunc) = 0; - NS_IMETHOD SetStyleSheet(nsIHTMLStyleSheet* aSheet) = 0; +#endif NS_IMETHOD List(FILE* out = stdout, PRInt32 aIndent = 0) const = 0; }; +class nsIHTMLMappedAttributes : public nsISupports { +public: + NS_DEFINE_STATIC_IID_ACCESSOR(NS_IHTML_MAPPED_ATTRIBUTES_IID); + + NS_IMETHOD GetAttribute(nsIAtom* aAttrName, nsHTMLValue& aValue) const = 0; + NS_IMETHOD GetAttributeCount(PRInt32& aCount) const = 0; + + NS_IMETHOD Equals(const nsIHTMLMappedAttributes* aAttributes, PRBool& aResult) const = 0; + NS_IMETHOD HashValue(PRUint32& aValue) const = 0; + + // Sheet accessors for unique table management + NS_IMETHOD SetUniqued(PRBool aUniqued) = 0; + NS_IMETHOD GetUniqued(PRBool& aUniqued) = 0; + NS_IMETHOD DropStyleSheetReference(void) = 0; +}; + extern NS_HTML nsresult - NS_NewHTMLAttributes(nsIHTMLAttributes** aInstancePtrResult, - nsIHTMLStyleSheet* aSheet, - nsMapAttributesFunc aFontMapFunc, - nsMapAttributesFunc aMapFunc); + NS_NewHTMLAttributes(nsIHTMLAttributes** aInstancePtrResult); #endif /* nsIHTMLAttributes_h___ */ diff --git a/layout/html/style/src/nsIHTMLAttributes.h b/layout/html/style/src/nsIHTMLAttributes.h index 1a2ef1f1983e..9362ea9191f9 100644 --- a/layout/html/style/src/nsIHTMLAttributes.h +++ b/layout/html/style/src/nsIHTMLAttributes.h @@ -32,16 +32,30 @@ class nsIHTMLStyleSheet; {0xa18f85f0, 0xc058, 0x11d1, \ {0x80, 0x31, 0x00, 0x60, 0x08, 0x15, 0x9b, 0x5a}} +// IID for the nsIHTMLMappedAttributes interface {0fdd27a0-2e7b-11d3-8060-006008159b5a} +#define NS_IHTML_MAPPED_ATTRIBUTES_IID \ +{0x0fdd27a0, 0x2e7b, 0x11d3, \ + {0x80, 0x60, 0x00, 0x60, 0x08, 0x15, 0x9b, 0x5a}} class nsIHTMLAttributes : public nsISupports { public: - NS_IMETHOD SetAttribute(nsIAtom* aAttribute, const nsHTMLValue& aValue, - PRInt32& aAttrCount) = 0; + NS_DEFINE_STATIC_IID_ACCESSOR(NS_IHTML_ATTRIBUTES_IID); + + NS_IMETHOD SetAttributeFor(nsIAtom* aAttribute, const nsHTMLValue& aValue, + PRBool aMappedToStyle, + nsIHTMLContent* aContent, + nsIHTMLStyleSheet* aSheet, + PRInt32& aAttrCount) = 0; // this string value version lets you avoid an extra string copy, // the value is still stored in a nsHTMLValue - NS_IMETHOD SetAttribute(nsIAtom* aAttribute, const nsString& aValue, - PRInt32& aAttrCount) = 0; - NS_IMETHOD UnsetAttribute(nsIAtom* aAttribute, PRInt32& aAttrCount) = 0; + NS_IMETHOD SetAttributeFor(nsIAtom* aAttribute, const nsString& aValue, + PRBool aMappedToStyle, + nsIHTMLContent* aContent, + nsIHTMLStyleSheet* aSheet) = 0; + NS_IMETHOD UnsetAttributeFor(nsIAtom* aAttribute, + nsIHTMLContent* aContent, + nsIHTMLStyleSheet* aSheet, + PRInt32& aAttrCount) = 0; NS_IMETHOD GetAttribute(nsIAtom* aAttribute, nsHTMLValue& aValue) const = 0; @@ -50,30 +64,49 @@ public: nsIAtom*& aName) const = 0; NS_IMETHOD GetAttributeCount(PRInt32& aAttrCount) const = 0; - NS_IMETHOD Equals(const nsIHTMLAttributes* aAttributes, PRBool& aResult) const = 0; - NS_IMETHOD HashValue(PRUint32& aValue) const = 0; NS_IMETHOD GetID(nsIAtom*& aResult) const = 0; NS_IMETHOD GetClasses(nsVoidArray& aArray) const = 0; NS_IMETHOD HasClass(nsIAtom* aClass) const = 0; + NS_IMETHOD Clone(nsIHTMLAttributes** aInstancePtrResult) const = 0; + + NS_IMETHOD SetStyleSheet(nsIHTMLStyleSheet* aSheet) = 0; + + NS_IMETHOD GetMappedAttributeStyleRules(nsISupportsArray* aArray) const = 0; + +#ifdef UNIQUE_ATTR_SUPPORT + NS_IMETHOD Equals(const nsIHTMLAttributes* aAttributes, PRBool& aResult) const = 0; + NS_IMETHOD HashValue(PRUint32& aValue) const = 0; + NS_IMETHOD AddContentRef(void) = 0; NS_IMETHOD ReleaseContentRef(void) = 0; NS_IMETHOD GetContentRefCount(PRInt32& aCount) const = 0; - NS_IMETHOD Clone(nsIHTMLAttributes** aInstancePtrResult) const = 0; NS_IMETHOD Reset(void) = 0; - NS_IMETHOD SetMappingFunctions(nsMapAttributesFunc aFontMapFunc, nsMapAttributesFunc aMapFunc) = 0; - NS_IMETHOD SetStyleSheet(nsIHTMLStyleSheet* aSheet) = 0; +#endif NS_IMETHOD List(FILE* out = stdout, PRInt32 aIndent = 0) const = 0; }; +class nsIHTMLMappedAttributes : public nsISupports { +public: + NS_DEFINE_STATIC_IID_ACCESSOR(NS_IHTML_MAPPED_ATTRIBUTES_IID); + + NS_IMETHOD GetAttribute(nsIAtom* aAttrName, nsHTMLValue& aValue) const = 0; + NS_IMETHOD GetAttributeCount(PRInt32& aCount) const = 0; + + NS_IMETHOD Equals(const nsIHTMLMappedAttributes* aAttributes, PRBool& aResult) const = 0; + NS_IMETHOD HashValue(PRUint32& aValue) const = 0; + + // Sheet accessors for unique table management + NS_IMETHOD SetUniqued(PRBool aUniqued) = 0; + NS_IMETHOD GetUniqued(PRBool& aUniqued) = 0; + NS_IMETHOD DropStyleSheetReference(void) = 0; +}; + extern NS_HTML nsresult - NS_NewHTMLAttributes(nsIHTMLAttributes** aInstancePtrResult, - nsIHTMLStyleSheet* aSheet, - nsMapAttributesFunc aFontMapFunc, - nsMapAttributesFunc aMapFunc); + NS_NewHTMLAttributes(nsIHTMLAttributes** aInstancePtrResult); #endif /* nsIHTMLAttributes_h___ */ diff --git a/layout/html/style/src/nsIHTMLStyleSheet.h b/layout/html/style/src/nsIHTMLStyleSheet.h index 85f3780d3092..b79ffb0672bf 100644 --- a/layout/html/style/src/nsIHTMLStyleSheet.h +++ b/layout/html/style/src/nsIHTMLStyleSheet.h @@ -26,6 +26,7 @@ class nsIAtom; class nsString; class nsHTMLValue; class nsIHTMLAttributes; +class nsIHTMLMappedAttributes; class nsIHTMLContent; class nsIDocument; @@ -45,14 +46,20 @@ public: NS_IMETHOD SetAttributesFor(nsIHTMLContent* aContent, nsIHTMLAttributes*& aAttributes) = 0; NS_IMETHOD SetAttributeFor(nsIAtom* aAttribute, const nsString& aValue, + PRBool aMappedToStyle, nsIHTMLContent* aContent, nsIHTMLAttributes*& aAttributes) = 0; NS_IMETHOD SetAttributeFor(nsIAtom* aAttribute, const nsHTMLValue& aValue, + PRBool aMappedToStyle, nsIHTMLContent* aContent, nsIHTMLAttributes*& aAttributes) = 0; NS_IMETHOD UnsetAttributeFor(nsIAtom* aAttribute, nsIHTMLContent* aContent, nsIHTMLAttributes*& aAttributes) = 0; + // Mapped Attribute management methods + NS_IMETHOD UniqueMappedAttributes(nsIHTMLMappedAttributes* aMapped, + nsIHTMLMappedAttributes*& aUniqueMapped) = 0; + NS_IMETHOD DropMappedAttributes(nsIHTMLMappedAttributes* aMapped) = 0; };