зеркало из https://github.com/mozilla/gecko-dev.git
Rename nsAtomStringList to nsPseudoClassList, since that's what it's for, and we want to make it more than just atoms and strings. Also remove an unused constructor. b=75375 r+sr=bzbarsky
This commit is contained in:
Родитель
becc8f7cf3
Коммит
1eef72cec5
|
@ -1927,8 +1927,8 @@ PRBool CSSParserImpl::ParseSelectorGroup(nsresult& aErrorCode,
|
|||
nsCSSSelector* listSel = list->mSelectors;
|
||||
|
||||
// pull out pseudo elements here
|
||||
nsAtomStringList* prevList = nsnull;
|
||||
nsAtomStringList* pseudoClassList = listSel->mPseudoClassList;
|
||||
nsPseudoClassList* prevList = nsnull;
|
||||
nsPseudoClassList* pseudoClassList = listSel->mPseudoClassList;
|
||||
while (nsnull != pseudoClassList) {
|
||||
if (! nsCSSPseudoClasses::IsPseudoClass(pseudoClassList->mAtom)) {
|
||||
havePseudoElement = PR_TRUE;
|
||||
|
|
|
@ -1076,7 +1076,7 @@ static PRBool SelectorMatches(RuleProcessorData &data,
|
|||
// test for pseudo class match
|
||||
// first-child, root, lang, active, focus, hover, link, visited...
|
||||
// XXX disabled, enabled, selected, selection
|
||||
for (nsAtomStringList* pseudoClass = aSelector->mPseudoClassList;
|
||||
for (nsPseudoClassList* pseudoClass = aSelector->mPseudoClassList;
|
||||
pseudoClass && result; pseudoClass = pseudoClass->mNext) {
|
||||
PRInt32 stateToCheck = 0;
|
||||
if ((nsCSSPseudoClasses::firstChild == pseudoClass->mAtom) ||
|
||||
|
@ -1929,7 +1929,7 @@ nsCSSRuleProcessor::ClearRuleCascades()
|
|||
inline
|
||||
PRBool IsStateSelector(nsCSSSelector& aSelector)
|
||||
{
|
||||
for (nsAtomStringList* pseudoClass = aSelector.mPseudoClassList;
|
||||
for (nsPseudoClassList* pseudoClass = aSelector.mPseudoClassList;
|
||||
pseudoClass; pseudoClass = pseudoClass->mNext) {
|
||||
if ((pseudoClass->mAtom == nsCSSPseudoClasses::active) ||
|
||||
(pseudoClass->mAtom == nsCSSPseudoClasses::checked) ||
|
||||
|
|
|
@ -158,45 +158,33 @@ nsAtomList::~nsAtomList(void)
|
|||
NS_IF_DEEP_DELETE(nsAtomList, mNext);
|
||||
}
|
||||
|
||||
nsAtomStringList::nsAtomStringList(nsIAtom* aAtom, const PRUnichar* aString)
|
||||
nsPseudoClassList::nsPseudoClassList(nsIAtom* aAtom, const PRUnichar* aString)
|
||||
: mAtom(aAtom),
|
||||
mString(nsnull),
|
||||
mNext(nsnull)
|
||||
{
|
||||
MOZ_COUNT_CTOR(nsAtomStringList);
|
||||
MOZ_COUNT_CTOR(nsPseudoClassList);
|
||||
if (aString)
|
||||
mString = NS_strdup(aString);
|
||||
}
|
||||
|
||||
nsAtomStringList::nsAtomStringList(const nsString& aAtomValue,
|
||||
const PRUnichar* aString)
|
||||
: mAtom(nsnull),
|
||||
mString(nsnull),
|
||||
mNext(nsnull)
|
||||
nsPseudoClassList*
|
||||
nsPseudoClassList::Clone(PRBool aDeep) const
|
||||
{
|
||||
MOZ_COUNT_CTOR(nsAtomStringList);
|
||||
mAtom = do_GetAtom(aAtomValue);
|
||||
if (aString)
|
||||
mString = NS_strdup(aString);
|
||||
}
|
||||
|
||||
nsAtomStringList*
|
||||
nsAtomStringList::Clone(PRBool aDeep) const
|
||||
{
|
||||
nsAtomStringList *result = new nsAtomStringList(mAtom, mString);
|
||||
nsPseudoClassList *result = new nsPseudoClassList(mAtom, mString);
|
||||
|
||||
if (aDeep)
|
||||
NS_IF_DEEP_CLONE(nsAtomStringList, mNext, (PR_FALSE));
|
||||
NS_IF_DEEP_CLONE(nsPseudoClassList, mNext, (PR_FALSE));
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
nsAtomStringList::~nsAtomStringList(void)
|
||||
nsPseudoClassList::~nsPseudoClassList(void)
|
||||
{
|
||||
MOZ_COUNT_DTOR(nsAtomStringList);
|
||||
MOZ_COUNT_DTOR(nsPseudoClassList);
|
||||
if (mString)
|
||||
NS_Free(mString);
|
||||
NS_IF_DEEP_DELETE(nsAtomStringList, mNext);
|
||||
NS_IF_DEEP_DELETE(nsPseudoClassList, mNext);
|
||||
}
|
||||
|
||||
nsAttrSelector::nsAttrSelector(PRInt32 aNameSpace, const nsString& aAttr)
|
||||
|
@ -359,27 +347,15 @@ void nsCSSSelector::AddClass(const nsString& aClass)
|
|||
}
|
||||
}
|
||||
|
||||
void nsCSSSelector::AddPseudoClass(const nsString& aPseudoClass,
|
||||
const PRUnichar* aString)
|
||||
{
|
||||
if (!aPseudoClass.IsEmpty()) {
|
||||
nsAtomStringList** list = &mPseudoClassList;
|
||||
while (nsnull != *list) {
|
||||
list = &((*list)->mNext);
|
||||
}
|
||||
*list = new nsAtomStringList(aPseudoClass, aString);
|
||||
}
|
||||
}
|
||||
|
||||
void nsCSSSelector::AddPseudoClass(nsIAtom* aPseudoClass,
|
||||
const PRUnichar* aString)
|
||||
{
|
||||
if (nsnull != aPseudoClass) {
|
||||
nsAtomStringList** list = &mPseudoClassList;
|
||||
nsPseudoClassList** list = &mPseudoClassList;
|
||||
while (nsnull != *list) {
|
||||
list = &((*list)->mNext);
|
||||
}
|
||||
*list = new nsAtomStringList(aPseudoClass, aString);
|
||||
*list = new nsPseudoClassList(aPseudoClass, aString);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -428,7 +404,7 @@ PRInt32 nsCSSSelector::CalcWeight(void) const
|
|||
weight += 0x000100;
|
||||
list = list->mNext;
|
||||
}
|
||||
nsAtomStringList *plist = mPseudoClassList;
|
||||
nsPseudoClassList *plist = mPseudoClassList;
|
||||
while (nsnull != plist) {
|
||||
weight += 0x000100;
|
||||
plist = plist->mNext;
|
||||
|
@ -648,7 +624,7 @@ void nsCSSSelector::ToStringInternal(nsAString& aString,
|
|||
|
||||
// Append each pseudo-class in the linked list
|
||||
if (mPseudoClassList) {
|
||||
nsAtomStringList* list = mPseudoClassList;
|
||||
nsPseudoClassList* list = mPseudoClassList;
|
||||
while (list != nsnull) {
|
||||
list->mAtom->ToString(temp);
|
||||
aString.Append(temp);
|
||||
|
|
|
@ -75,24 +75,23 @@ private:
|
|||
nsAtomList& operator=(const nsAtomList& aCopy);
|
||||
};
|
||||
|
||||
struct nsAtomStringList {
|
||||
struct nsPseudoClassList {
|
||||
public:
|
||||
nsAtomStringList(nsIAtom* aAtom, const PRUnichar *aString = nsnull);
|
||||
nsAtomStringList(const nsString& aAtomValue, const PRUnichar *aString = nsnull);
|
||||
~nsAtomStringList(void);
|
||||
nsPseudoClassList(nsIAtom* aAtom, const PRUnichar *aString = nsnull);
|
||||
~nsPseudoClassList(void);
|
||||
|
||||
/** Do a deep clone. Should be used only on the first in the linked list. */
|
||||
nsAtomStringList* Clone() const { return Clone(PR_TRUE); }
|
||||
nsPseudoClassList* Clone() const { return Clone(PR_TRUE); }
|
||||
|
||||
nsCOMPtr<nsIAtom> mAtom;
|
||||
PRUnichar* mString;
|
||||
nsAtomStringList* mNext;
|
||||
nsPseudoClassList* mNext;
|
||||
private:
|
||||
nsAtomStringList* Clone(PRBool aDeep) const;
|
||||
nsPseudoClassList* Clone(PRBool aDeep) const;
|
||||
|
||||
// These are not supported and are not implemented!
|
||||
nsAtomStringList(const nsAtomStringList& aCopy);
|
||||
nsAtomStringList& operator=(const nsAtomStringList& aCopy);
|
||||
nsPseudoClassList(const nsPseudoClassList& aCopy);
|
||||
nsPseudoClassList& operator=(const nsPseudoClassList& aCopy);
|
||||
};
|
||||
|
||||
#define NS_ATTR_FUNC_SET 0 // [attr]
|
||||
|
@ -142,7 +141,6 @@ public:
|
|||
void SetTag(const nsString& aTag);
|
||||
void AddID(const nsString& aID);
|
||||
void AddClass(const nsString& aClass);
|
||||
void AddPseudoClass(const nsString& aPseudoClass, const PRUnichar* aString = nsnull);
|
||||
void AddPseudoClass(nsIAtom* aPseudoClass, const PRUnichar* aString = nsnull);
|
||||
void AddAttribute(PRInt32 aNameSpace, const nsString& aAttr);
|
||||
void AddAttribute(PRInt32 aNameSpace, const nsString& aAttr, PRUint8 aFunc,
|
||||
|
@ -167,8 +165,8 @@ public:
|
|||
nsCOMPtr<nsIAtom> mTag;
|
||||
nsAtomList* mIDList;
|
||||
nsAtomList* mClassList;
|
||||
nsAtomStringList* mPseudoClassList; // atom for the pseudo, string for
|
||||
// the argument to functional pseudos
|
||||
nsPseudoClassList* mPseudoClassList; // atom for the pseudo, string for
|
||||
// the argument to functional pseudos
|
||||
nsAttrSelector* mAttrList;
|
||||
PRUnichar mOperator;
|
||||
nsCSSSelector* mNegations;
|
||||
|
|
|
@ -4119,7 +4119,7 @@ nsTreeBodyFrame::PseudoMatches(nsIAtom* aTag, nsCSSSelector* aSelector, PRBool*
|
|||
// it is contained in our scratch array. If we have a miss, then
|
||||
// we aren't a match. If all items in the pseudoclass list are
|
||||
// present in the scratch array, then we have a match.
|
||||
nsAtomStringList* curr = aSelector->mPseudoClassList;
|
||||
nsPseudoClassList* curr = aSelector->mPseudoClassList;
|
||||
while (curr) {
|
||||
PRInt32 index;
|
||||
mScratchArray->GetIndexOf(curr->mAtom, &index);
|
||||
|
|
Загрузка…
Ссылка в новой задаче