Remove change hints from CSS parser and replace with boolean indicating whether there was a change, computed a much simpler way. b=158713 r+sr=bzbarsky

This commit is contained in:
dbaron%dbaron.org 2003-06-30 21:39:22 +00:00
parent 8bf13d8ca8
commit 97c994908a
10 changed files with 580 additions and 598 deletions

View File

@ -39,7 +39,6 @@
#define nsCSS1Parser_h___
#include "nsISupports.h"
#include "nsChangeHint.h"
#include "nsAString.h"
class nsIStyleRule;
@ -91,7 +90,7 @@ public:
nsIURI* aBaseURL,
nsCSSDeclaration* aDeclaration,
PRBool aParseOnlyOneDecl,
nsChangeHint* aHint,
PRBool* aChanged,
PRBool aClearOldDecl) = 0;
NS_IMETHOD ParseRule(const nsAString& aRule,
@ -102,7 +101,7 @@ public:
const nsAString& aPropValue,
nsIURI* aBaseURL,
nsCSSDeclaration* aDeclaration,
nsChangeHint* aHint) = 0;
PRBool* aChanged) = 0;
};
nsresult

File diff suppressed because it is too large Load Diff

View File

@ -122,6 +122,20 @@ nsCSSValueList::~nsCSSValueList(void)
CSS_IF_DELETE(mNext);
}
/* static */ PRBool
nsCSSValueList::Equal(nsCSSValueList* aList1, nsCSSValueList* aList2)
{
if (aList1 == aList2)
return PR_TRUE;
nsCSSValueList *p1 = aList1, *p2 = aList2;
for ( ; p1 && p2; p1 = p1->mNext, p2 = p2->mNext) {
if (p1->mValue != p2->mValue)
return PR_FALSE;
}
return !p1 && !p2; // true if same length, false otherwise
}
// --- nsCSSColor -----------------
nsCSSColor::nsCSSColor(void)
@ -196,6 +210,23 @@ nsCSSShadow::~nsCSSShadow(void)
CSS_IF_DELETE(mNext);
}
/* static */ PRBool
nsCSSShadow::Equal(nsCSSShadow* aList1, nsCSSShadow* aList2)
{
if (aList1 == aList2)
return PR_TRUE;
nsCSSShadow *p1 = aList1, *p2 = aList2;
for ( ; p1 && p2; p1 = p1->mNext, p2 = p2->mNext) {
if (p1->mColor != p2->mColor ||
p1->mXOffset != p2->mXOffset ||
p1->mYOffset != p2->mYOffset ||
p1->mRadius != p2->mRadius)
return PR_FALSE;
}
return !p1 && !p2; // true if same length, false otherwise
}
// --- nsCSSText -----------------
nsCSSText::nsCSSText(void)
@ -827,6 +858,21 @@ nsCSSCounterData::~nsCSSCounterData(void)
CSS_IF_DELETE(mNext);
}
/* static */ PRBool
nsCSSCounterData::Equal(nsCSSCounterData* aList1, nsCSSCounterData* aList2)
{
if (aList1 == aList2)
return PR_TRUE;
nsCSSCounterData *p1 = aList1, *p2 = aList2;
for ( ; p1 && p2; p1 = p1->mNext, p2 = p2->mNext) {
if (p1->mCounter != p2->mCounter ||
p1->mValue != p2->mValue)
return PR_FALSE;
}
return !p1 && !p2; // true if same length, false otherwise
}
nsCSSQuotes::nsCSSQuotes(void)
: mNext(nsnull)
{
@ -848,6 +894,21 @@ nsCSSQuotes::~nsCSSQuotes(void)
CSS_IF_DELETE(mNext);
}
/* static */ PRBool
nsCSSQuotes::Equal(nsCSSQuotes* aList1, nsCSSQuotes* aList2)
{
if (aList1 == aList2)
return PR_TRUE;
nsCSSQuotes *p1 = aList1, *p2 = aList2;
for ( ; p1 && p2; p1 = p1->mNext, p2 = p2->mNext) {
if (p1->mOpen != p2->mOpen ||
p1->mClose != p2->mClose)
return PR_FALSE;
}
return !p1 && !p2; // true if same length, false otherwise
}
// --- nsCSSContent -----------------
nsCSSContent::nsCSSContent(void)

View File

@ -82,6 +82,8 @@ struct nsCSSValueList {
nsCSSValueList(const nsCSSValueList& aCopy);
~nsCSSValueList(void);
static PRBool Equal(nsCSSValueList* aList1, nsCSSValueList* aList2);
nsCSSValue mValue;
nsCSSValueList* mNext;
};
@ -114,6 +116,8 @@ struct nsCSSShadow {
nsCSSShadow(const nsCSSShadow& aCopy);
~nsCSSShadow(void);
static PRBool Equal(nsCSSShadow* aList1, nsCSSShadow* aList2);
nsCSSValue mColor;
nsCSSValue mXOffset;
nsCSSValue mYOffset;
@ -366,6 +370,8 @@ struct nsCSSCounterData {
nsCSSCounterData(const nsCSSCounterData& aCopy);
~nsCSSCounterData(void);
static PRBool Equal(nsCSSCounterData* aList1, nsCSSCounterData* aList2);
nsCSSValue mCounter;
nsCSSValue mValue;
nsCSSCounterData* mNext;
@ -376,6 +382,8 @@ struct nsCSSQuotes {
nsCSSQuotes(const nsCSSQuotes& aCopy);
~nsCSSQuotes(void);
static PRBool Equal(nsCSSQuotes* aList1, nsCSSQuotes* aList2);
nsCSSValue mOpen;
nsCSSValue mClose;
nsCSSQuotes* mNext;

View File

@ -281,10 +281,10 @@ nsDOMCSSDeclaration::ParsePropertyValue(const nsAString& aPropName,
return result;
}
nsChangeHint uselessHint = NS_STYLE_HINT_NONE;
PRBool changed;
result = cssParser->ParseProperty(aPropName, aPropValue, baseURI, decl,
&uselessHint);
if (NS_SUCCEEDED(result)) {
&changed);
if (NS_SUCCEEDED(result) && changed) {
result = DeclarationChanged();
}
@ -318,13 +318,13 @@ nsDOMCSSDeclaration::ParseDeclaration(const nsAString& aDecl,
return result;
}
nsChangeHint uselessHint = NS_STYLE_HINT_NONE;
PRBool changed;
result = cssParser->ParseAndAppendDeclaration(aDecl, baseURI, decl,
aParseOnlyOneDecl,
&uselessHint,
&changed,
aClearOldDecl);
if (NS_SUCCEEDED(result)) {
if (NS_SUCCEEDED(result) && changed) {
result = DeclarationChanged();
}

File diff suppressed because it is too large Load Diff

View File

@ -122,6 +122,20 @@ nsCSSValueList::~nsCSSValueList(void)
CSS_IF_DELETE(mNext);
}
/* static */ PRBool
nsCSSValueList::Equal(nsCSSValueList* aList1, nsCSSValueList* aList2)
{
if (aList1 == aList2)
return PR_TRUE;
nsCSSValueList *p1 = aList1, *p2 = aList2;
for ( ; p1 && p2; p1 = p1->mNext, p2 = p2->mNext) {
if (p1->mValue != p2->mValue)
return PR_FALSE;
}
return !p1 && !p2; // true if same length, false otherwise
}
// --- nsCSSColor -----------------
nsCSSColor::nsCSSColor(void)
@ -196,6 +210,23 @@ nsCSSShadow::~nsCSSShadow(void)
CSS_IF_DELETE(mNext);
}
/* static */ PRBool
nsCSSShadow::Equal(nsCSSShadow* aList1, nsCSSShadow* aList2)
{
if (aList1 == aList2)
return PR_TRUE;
nsCSSShadow *p1 = aList1, *p2 = aList2;
for ( ; p1 && p2; p1 = p1->mNext, p2 = p2->mNext) {
if (p1->mColor != p2->mColor ||
p1->mXOffset != p2->mXOffset ||
p1->mYOffset != p2->mYOffset ||
p1->mRadius != p2->mRadius)
return PR_FALSE;
}
return !p1 && !p2; // true if same length, false otherwise
}
// --- nsCSSText -----------------
nsCSSText::nsCSSText(void)
@ -827,6 +858,21 @@ nsCSSCounterData::~nsCSSCounterData(void)
CSS_IF_DELETE(mNext);
}
/* static */ PRBool
nsCSSCounterData::Equal(nsCSSCounterData* aList1, nsCSSCounterData* aList2)
{
if (aList1 == aList2)
return PR_TRUE;
nsCSSCounterData *p1 = aList1, *p2 = aList2;
for ( ; p1 && p2; p1 = p1->mNext, p2 = p2->mNext) {
if (p1->mCounter != p2->mCounter ||
p1->mValue != p2->mValue)
return PR_FALSE;
}
return !p1 && !p2; // true if same length, false otherwise
}
nsCSSQuotes::nsCSSQuotes(void)
: mNext(nsnull)
{
@ -848,6 +894,21 @@ nsCSSQuotes::~nsCSSQuotes(void)
CSS_IF_DELETE(mNext);
}
/* static */ PRBool
nsCSSQuotes::Equal(nsCSSQuotes* aList1, nsCSSQuotes* aList2)
{
if (aList1 == aList2)
return PR_TRUE;
nsCSSQuotes *p1 = aList1, *p2 = aList2;
for ( ; p1 && p2; p1 = p1->mNext, p2 = p2->mNext) {
if (p1->mOpen != p2->mOpen ||
p1->mClose != p2->mClose)
return PR_FALSE;
}
return !p1 && !p2; // true if same length, false otherwise
}
// --- nsCSSContent -----------------
nsCSSContent::nsCSSContent(void)

View File

@ -82,6 +82,8 @@ struct nsCSSValueList {
nsCSSValueList(const nsCSSValueList& aCopy);
~nsCSSValueList(void);
static PRBool Equal(nsCSSValueList* aList1, nsCSSValueList* aList2);
nsCSSValue mValue;
nsCSSValueList* mNext;
};
@ -114,6 +116,8 @@ struct nsCSSShadow {
nsCSSShadow(const nsCSSShadow& aCopy);
~nsCSSShadow(void);
static PRBool Equal(nsCSSShadow* aList1, nsCSSShadow* aList2);
nsCSSValue mColor;
nsCSSValue mXOffset;
nsCSSValue mYOffset;
@ -366,6 +370,8 @@ struct nsCSSCounterData {
nsCSSCounterData(const nsCSSCounterData& aCopy);
~nsCSSCounterData(void);
static PRBool Equal(nsCSSCounterData* aList1, nsCSSCounterData* aList2);
nsCSSValue mCounter;
nsCSSValue mValue;
nsCSSCounterData* mNext;
@ -376,6 +382,8 @@ struct nsCSSQuotes {
nsCSSQuotes(const nsCSSQuotes& aCopy);
~nsCSSQuotes(void);
static PRBool Equal(nsCSSQuotes* aList1, nsCSSQuotes* aList2);
nsCSSValue mOpen;
nsCSSValue mClose;
nsCSSQuotes* mNext;

View File

@ -281,10 +281,10 @@ nsDOMCSSDeclaration::ParsePropertyValue(const nsAString& aPropName,
return result;
}
nsChangeHint uselessHint = NS_STYLE_HINT_NONE;
PRBool changed;
result = cssParser->ParseProperty(aPropName, aPropValue, baseURI, decl,
&uselessHint);
if (NS_SUCCEEDED(result)) {
&changed);
if (NS_SUCCEEDED(result) && changed) {
result = DeclarationChanged();
}
@ -318,13 +318,13 @@ nsDOMCSSDeclaration::ParseDeclaration(const nsAString& aDecl,
return result;
}
nsChangeHint uselessHint = NS_STYLE_HINT_NONE;
PRBool changed;
result = cssParser->ParseAndAppendDeclaration(aDecl, baseURI, decl,
aParseOnlyOneDecl,
&uselessHint,
&changed,
aClearOldDecl);
if (NS_SUCCEEDED(result)) {
if (NS_SUCCEEDED(result) && changed) {
result = DeclarationChanged();
}

View File

@ -39,7 +39,6 @@
#define nsCSS1Parser_h___
#include "nsISupports.h"
#include "nsChangeHint.h"
#include "nsAString.h"
class nsIStyleRule;
@ -91,7 +90,7 @@ public:
nsIURI* aBaseURL,
nsCSSDeclaration* aDeclaration,
PRBool aParseOnlyOneDecl,
nsChangeHint* aHint,
PRBool* aChanged,
PRBool aClearOldDecl) = 0;
NS_IMETHOD ParseRule(const nsAString& aRule,
@ -102,7 +101,7 @@ public:
const nsAString& aPropValue,
nsIURI* aBaseURL,
nsCSSDeclaration* aDeclaration,
nsChangeHint* aHint) = 0;
PRBool* aChanged) = 0;
};
nsresult