diff --git a/content/html/style/src/nsICSSStyleRule.h b/content/html/style/src/nsICSSStyleRule.h
index f4329a1bd6e6..c6b70248444f 100644
--- a/content/html/style/src/nsICSSStyleRule.h
+++ b/content/html/style/src/nsICSSStyleRule.h
@@ -21,29 +21,74 @@
#include
#include "nslayout.h"
#include "nsIStyleRule.h"
+#include "nsString.h"
+
class nsIAtom;
class nsIArena;
-class nsString;
class nsICSSDeclaration;
class nsICSSStyleSheet;
+struct nsAtomList {
+public:
+ nsAtomList(nsIAtom* aAtom);
+ nsAtomList(const nsString& aAtomValue);
+ nsAtomList(const nsAtomList& aCopy);
+ ~nsAtomList(void);
+ PRBool Equals(const nsAtomList* aOther) const;
+
+ nsIAtom* mAtom;
+ nsAtomList* mNext;
+};
+
+#define NS_ATTR_FUNC_SET 0 // [attr]
+#define NS_ATTR_FUNC_EQUALS 1 // [attr=value]
+#define NS_ATTR_FUNC_INCLUDES 2 // [attr~=value] (space separated)
+#define NS_ATTR_FUNC_DASHMATCH 3 // [attr|=value] ('-' separated)
+
+struct nsAttrSelector {
+public:
+ nsAttrSelector(const nsString& aAttr);
+ nsAttrSelector(const nsString& aAttr, PRUint8 aFunction, const nsString& aValue);
+ nsAttrSelector(const nsAttrSelector& aCopy);
+ ~nsAttrSelector(void);
+ PRBool Equals(const nsAttrSelector* aOther) const;
+
+ nsIAtom* mAttr;
+ PRUint8 mFunction;
+ nsString mValue;
+ nsAttrSelector* mNext;
+};
+
struct nsCSSSelector {
public:
- nsCSSSelector();
- nsCSSSelector(nsIAtom* aTag, nsIAtom* aID, nsIAtom* aClass, nsIAtom* aPseudoClass);
+ nsCSSSelector(void);
nsCSSSelector(const nsCSSSelector& aCopy);
- ~nsCSSSelector();
+ ~nsCSSSelector(void);
nsCSSSelector& operator=(const nsCSSSelector& aCopy);
PRBool Equals(const nsCSSSelector* aOther) const;
- void Set(const nsString& aTag, const nsString& aID, const nsString& aClass, const nsString& aPseudoClass);
+ void Reset(void);
+ void SetNameSpace(PRInt32 aNameSpace);
+ void SetTag(const nsString& aTag);
+ void SetID(const nsString& aID);
+ void AddClass(const nsString& aClass);
+ void AddPseudoClass(const nsString& aPseudoClass);
+ void AddPseudoClass(nsIAtom* aPseudoClass);
+ void AddAttribute(const nsString& aAttr);
+ void AddAttribute(const nsString& aAttr, PRUint8 aFunc, const nsString& aValue);
+ void SetOperator(PRUnichar aOperator);
+ PRInt32 CalcWeight(void) const;
+
public:
- nsIAtom* mTag;
- nsIAtom* mID;
- nsIAtom* mClass; // this'll have to be an array for CSS2
- nsIAtom* mPseudoClass;
+ PRInt32 mNameSpace;
+ nsIAtom* mTag;
+ nsIAtom* mID;
+ nsAtomList* mClassList;
+ nsAtomList* mPseudoClassList;
+ nsAttrSelector* mAttrList;
+ PRUnichar mOperator;
nsCSSSelector* mNext;
};
@@ -57,6 +102,8 @@ public:
virtual nsCSSSelector* FirstSelector(void) = 0;
virtual void AddSelector(const nsCSSSelector& aSelector) = 0;
virtual void DeleteSelector(nsCSSSelector* aSelector) = 0;
+ virtual void SetSourceSelectorText(const nsString& aSelectorText) = 0;
+ virtual void GetSourceSelectorText(nsString& aSelectorText) const = 0;
virtual nsICSSDeclaration* GetDeclaration(void) const = 0;
virtual void SetDeclaration(nsICSSDeclaration* aDeclaration) = 0;
diff --git a/layout/html/style/src/nsICSSStyleRule.h b/layout/html/style/src/nsICSSStyleRule.h
index f4329a1bd6e6..c6b70248444f 100644
--- a/layout/html/style/src/nsICSSStyleRule.h
+++ b/layout/html/style/src/nsICSSStyleRule.h
@@ -21,29 +21,74 @@
#include
#include "nslayout.h"
#include "nsIStyleRule.h"
+#include "nsString.h"
+
class nsIAtom;
class nsIArena;
-class nsString;
class nsICSSDeclaration;
class nsICSSStyleSheet;
+struct nsAtomList {
+public:
+ nsAtomList(nsIAtom* aAtom);
+ nsAtomList(const nsString& aAtomValue);
+ nsAtomList(const nsAtomList& aCopy);
+ ~nsAtomList(void);
+ PRBool Equals(const nsAtomList* aOther) const;
+
+ nsIAtom* mAtom;
+ nsAtomList* mNext;
+};
+
+#define NS_ATTR_FUNC_SET 0 // [attr]
+#define NS_ATTR_FUNC_EQUALS 1 // [attr=value]
+#define NS_ATTR_FUNC_INCLUDES 2 // [attr~=value] (space separated)
+#define NS_ATTR_FUNC_DASHMATCH 3 // [attr|=value] ('-' separated)
+
+struct nsAttrSelector {
+public:
+ nsAttrSelector(const nsString& aAttr);
+ nsAttrSelector(const nsString& aAttr, PRUint8 aFunction, const nsString& aValue);
+ nsAttrSelector(const nsAttrSelector& aCopy);
+ ~nsAttrSelector(void);
+ PRBool Equals(const nsAttrSelector* aOther) const;
+
+ nsIAtom* mAttr;
+ PRUint8 mFunction;
+ nsString mValue;
+ nsAttrSelector* mNext;
+};
+
struct nsCSSSelector {
public:
- nsCSSSelector();
- nsCSSSelector(nsIAtom* aTag, nsIAtom* aID, nsIAtom* aClass, nsIAtom* aPseudoClass);
+ nsCSSSelector(void);
nsCSSSelector(const nsCSSSelector& aCopy);
- ~nsCSSSelector();
+ ~nsCSSSelector(void);
nsCSSSelector& operator=(const nsCSSSelector& aCopy);
PRBool Equals(const nsCSSSelector* aOther) const;
- void Set(const nsString& aTag, const nsString& aID, const nsString& aClass, const nsString& aPseudoClass);
+ void Reset(void);
+ void SetNameSpace(PRInt32 aNameSpace);
+ void SetTag(const nsString& aTag);
+ void SetID(const nsString& aID);
+ void AddClass(const nsString& aClass);
+ void AddPseudoClass(const nsString& aPseudoClass);
+ void AddPseudoClass(nsIAtom* aPseudoClass);
+ void AddAttribute(const nsString& aAttr);
+ void AddAttribute(const nsString& aAttr, PRUint8 aFunc, const nsString& aValue);
+ void SetOperator(PRUnichar aOperator);
+ PRInt32 CalcWeight(void) const;
+
public:
- nsIAtom* mTag;
- nsIAtom* mID;
- nsIAtom* mClass; // this'll have to be an array for CSS2
- nsIAtom* mPseudoClass;
+ PRInt32 mNameSpace;
+ nsIAtom* mTag;
+ nsIAtom* mID;
+ nsAtomList* mClassList;
+ nsAtomList* mPseudoClassList;
+ nsAttrSelector* mAttrList;
+ PRUnichar mOperator;
nsCSSSelector* mNext;
};
@@ -57,6 +102,8 @@ public:
virtual nsCSSSelector* FirstSelector(void) = 0;
virtual void AddSelector(const nsCSSSelector& aSelector) = 0;
virtual void DeleteSelector(nsCSSSelector* aSelector) = 0;
+ virtual void SetSourceSelectorText(const nsString& aSelectorText) = 0;
+ virtual void GetSourceSelectorText(nsString& aSelectorText) const = 0;
virtual nsICSSDeclaration* GetDeclaration(void) const = 0;
virtual void SetDeclaration(nsICSSDeclaration* aDeclaration) = 0;
diff --git a/layout/style/nsICSSStyleRule.h b/layout/style/nsICSSStyleRule.h
index f4329a1bd6e6..c6b70248444f 100644
--- a/layout/style/nsICSSStyleRule.h
+++ b/layout/style/nsICSSStyleRule.h
@@ -21,29 +21,74 @@
#include
#include "nslayout.h"
#include "nsIStyleRule.h"
+#include "nsString.h"
+
class nsIAtom;
class nsIArena;
-class nsString;
class nsICSSDeclaration;
class nsICSSStyleSheet;
+struct nsAtomList {
+public:
+ nsAtomList(nsIAtom* aAtom);
+ nsAtomList(const nsString& aAtomValue);
+ nsAtomList(const nsAtomList& aCopy);
+ ~nsAtomList(void);
+ PRBool Equals(const nsAtomList* aOther) const;
+
+ nsIAtom* mAtom;
+ nsAtomList* mNext;
+};
+
+#define NS_ATTR_FUNC_SET 0 // [attr]
+#define NS_ATTR_FUNC_EQUALS 1 // [attr=value]
+#define NS_ATTR_FUNC_INCLUDES 2 // [attr~=value] (space separated)
+#define NS_ATTR_FUNC_DASHMATCH 3 // [attr|=value] ('-' separated)
+
+struct nsAttrSelector {
+public:
+ nsAttrSelector(const nsString& aAttr);
+ nsAttrSelector(const nsString& aAttr, PRUint8 aFunction, const nsString& aValue);
+ nsAttrSelector(const nsAttrSelector& aCopy);
+ ~nsAttrSelector(void);
+ PRBool Equals(const nsAttrSelector* aOther) const;
+
+ nsIAtom* mAttr;
+ PRUint8 mFunction;
+ nsString mValue;
+ nsAttrSelector* mNext;
+};
+
struct nsCSSSelector {
public:
- nsCSSSelector();
- nsCSSSelector(nsIAtom* aTag, nsIAtom* aID, nsIAtom* aClass, nsIAtom* aPseudoClass);
+ nsCSSSelector(void);
nsCSSSelector(const nsCSSSelector& aCopy);
- ~nsCSSSelector();
+ ~nsCSSSelector(void);
nsCSSSelector& operator=(const nsCSSSelector& aCopy);
PRBool Equals(const nsCSSSelector* aOther) const;
- void Set(const nsString& aTag, const nsString& aID, const nsString& aClass, const nsString& aPseudoClass);
+ void Reset(void);
+ void SetNameSpace(PRInt32 aNameSpace);
+ void SetTag(const nsString& aTag);
+ void SetID(const nsString& aID);
+ void AddClass(const nsString& aClass);
+ void AddPseudoClass(const nsString& aPseudoClass);
+ void AddPseudoClass(nsIAtom* aPseudoClass);
+ void AddAttribute(const nsString& aAttr);
+ void AddAttribute(const nsString& aAttr, PRUint8 aFunc, const nsString& aValue);
+ void SetOperator(PRUnichar aOperator);
+ PRInt32 CalcWeight(void) const;
+
public:
- nsIAtom* mTag;
- nsIAtom* mID;
- nsIAtom* mClass; // this'll have to be an array for CSS2
- nsIAtom* mPseudoClass;
+ PRInt32 mNameSpace;
+ nsIAtom* mTag;
+ nsIAtom* mID;
+ nsAtomList* mClassList;
+ nsAtomList* mPseudoClassList;
+ nsAttrSelector* mAttrList;
+ PRUnichar mOperator;
nsCSSSelector* mNext;
};
@@ -57,6 +102,8 @@ public:
virtual nsCSSSelector* FirstSelector(void) = 0;
virtual void AddSelector(const nsCSSSelector& aSelector) = 0;
virtual void DeleteSelector(nsCSSSelector* aSelector) = 0;
+ virtual void SetSourceSelectorText(const nsString& aSelectorText) = 0;
+ virtual void GetSourceSelectorText(nsString& aSelectorText) const = 0;
virtual nsICSSDeclaration* GetDeclaration(void) const = 0;
virtual void SetDeclaration(nsICSSDeclaration* aDeclaration) = 0;