From cd5e4baffe500b6de6a8ef373c2406bf2016e436 Mon Sep 17 00:00:00 2001 From: "bzbarsky%mit.edu" Date: Wed, 6 Oct 2004 00:45:42 +0000 Subject: [PATCH] Fix "normal" and "-moz-initial" values for "content" to do the right thing. Bug 262624, r+sr=dbaron git-svn-id: svn://10.0.0.236/trunk@163273 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/content/base/src/nsRuleNode.cpp | 7 +++++-- mozilla/content/html/style/src/nsCSSParser.cpp | 6 ++++-- mozilla/layout/style/nsCSSParser.cpp | 6 ++++-- mozilla/layout/style/nsRuleNode.cpp | 7 +++++-- 4 files changed, 18 insertions(+), 8 deletions(-) diff --git a/mozilla/content/base/src/nsRuleNode.cpp b/mozilla/content/base/src/nsRuleNode.cpp index aee9309ad05..6a38ad59145 100644 --- a/mozilla/content/base/src/nsRuleNode.cpp +++ b/mozilla/content/base/src/nsRuleNode.cpp @@ -3917,11 +3917,14 @@ nsRuleNode::ComputeContentData(nsStyleStruct* aStartStruct, parentContent = parentContext->GetStyleContent(); PRBool inherited = aInherited; - // content: [string, url, counter, attr, enum]+, inherit + // content: [string, url, counter, attr, enum]+, normal, inherit PRUint32 count; nsAutoString buffer; nsCSSValueList* contentValue = contentData.mContent; - if (contentValue) { + // "normal" and "initial" both mean no content + if (contentValue && + contentValue->mValue.GetUnit() != eCSSUnit_Normal && + contentValue->mValue.GetUnit() != eCSSUnit_Initial) { if (eCSSUnit_Inherit == contentValue->mValue.GetUnit()) { inherited = PR_TRUE; count = parentContent->ContentCount(); diff --git a/mozilla/content/html/style/src/nsCSSParser.cpp b/mozilla/content/html/style/src/nsCSSParser.cpp index 773c35cbf51..8b3919de7e1 100644 --- a/mozilla/content/html/style/src/nsCSSParser.cpp +++ b/mozilla/content/html/style/src/nsCSSParser.cpp @@ -5149,7 +5149,8 @@ CSSParserImpl::DoParseRect(nsCSSRect& aRect, nsresult& aErrorCode) PRBool CSSParserImpl::ParseContent(nsresult& aErrorCode) { nsCSSValue value; - if (ParseVariant(aErrorCode, value, VARIANT_CONTENT | VARIANT_INHERIT, + if (ParseVariant(aErrorCode, value, + VARIANT_CONTENT | VARIANT_INHERIT | VARIANT_NORMAL, nsCSSProps::kContentKTable)) { nsCSSValueList* listHead = new nsCSSValueList(); nsCSSValueList* list = listHead; @@ -5167,7 +5168,8 @@ PRBool CSSParserImpl::ParseContent(nsresult& aErrorCode) return PR_TRUE; } if (eCSSUnit_Inherit == value.GetUnit() || - eCSSUnit_Initial == value.GetUnit()) { + eCSSUnit_Initial == value.GetUnit() || + eCSSUnit_Normal == value.GetUnit()) { // This only matters the first time through the loop. return PR_FALSE; } diff --git a/mozilla/layout/style/nsCSSParser.cpp b/mozilla/layout/style/nsCSSParser.cpp index 773c35cbf51..8b3919de7e1 100644 --- a/mozilla/layout/style/nsCSSParser.cpp +++ b/mozilla/layout/style/nsCSSParser.cpp @@ -5149,7 +5149,8 @@ CSSParserImpl::DoParseRect(nsCSSRect& aRect, nsresult& aErrorCode) PRBool CSSParserImpl::ParseContent(nsresult& aErrorCode) { nsCSSValue value; - if (ParseVariant(aErrorCode, value, VARIANT_CONTENT | VARIANT_INHERIT, + if (ParseVariant(aErrorCode, value, + VARIANT_CONTENT | VARIANT_INHERIT | VARIANT_NORMAL, nsCSSProps::kContentKTable)) { nsCSSValueList* listHead = new nsCSSValueList(); nsCSSValueList* list = listHead; @@ -5167,7 +5168,8 @@ PRBool CSSParserImpl::ParseContent(nsresult& aErrorCode) return PR_TRUE; } if (eCSSUnit_Inherit == value.GetUnit() || - eCSSUnit_Initial == value.GetUnit()) { + eCSSUnit_Initial == value.GetUnit() || + eCSSUnit_Normal == value.GetUnit()) { // This only matters the first time through the loop. return PR_FALSE; } diff --git a/mozilla/layout/style/nsRuleNode.cpp b/mozilla/layout/style/nsRuleNode.cpp index aee9309ad05..6a38ad59145 100644 --- a/mozilla/layout/style/nsRuleNode.cpp +++ b/mozilla/layout/style/nsRuleNode.cpp @@ -3917,11 +3917,14 @@ nsRuleNode::ComputeContentData(nsStyleStruct* aStartStruct, parentContent = parentContext->GetStyleContent(); PRBool inherited = aInherited; - // content: [string, url, counter, attr, enum]+, inherit + // content: [string, url, counter, attr, enum]+, normal, inherit PRUint32 count; nsAutoString buffer; nsCSSValueList* contentValue = contentData.mContent; - if (contentValue) { + // "normal" and "initial" both mean no content + if (contentValue && + contentValue->mValue.GetUnit() != eCSSUnit_Normal && + contentValue->mValue.GetUnit() != eCSSUnit_Initial) { if (eCSSUnit_Inherit == contentValue->mValue.GetUnit()) { inherited = PR_TRUE; count = parentContent->ContentCount();