diff --git a/content/base/src/nsStyleSet.cpp b/content/base/src/nsStyleSet.cpp index 0fb308580d7a..efbf059fb427 100644 --- a/content/base/src/nsStyleSet.cpp +++ b/content/base/src/nsStyleSet.cpp @@ -193,15 +193,18 @@ public: virtual nsIStyleContext* ResolveStyleFor(nsIPresContext* aPresContext, nsIContent* aContent, - nsIFrame* aParentFrame); + nsIFrame* aParentFrame, + PRBool aForceUnique = PR_FALSE); virtual nsIStyleContext* ResolvePseudoStyleFor(nsIPresContext* aPresContext, nsIAtom* aPseudoTag, - nsIFrame* aParentFrame); + nsIFrame* aParentFrame, + PRBool aForceUnique = PR_FALSE); virtual nsIStyleContext* ProbePseudoStyleFor(nsIPresContext* aPresContext, nsIAtom* aPseudoTag, - nsIFrame* aParentFrame); + nsIFrame* aParentFrame, + PRBool aForceUnique = PR_FALSE); // xxx style rules enumeration @@ -216,7 +219,8 @@ protected: virtual ~StyleSetImpl(); PRBool EnsureArray(nsISupportsArray** aArray); nsIStyleContext* GetContext(nsIPresContext* aPresContext, nsIFrame* aParentFrame, - nsIStyleContext* aParentContext, nsISupportsArray* aRules); + nsIStyleContext* aParentContext, nsISupportsArray* aRules, + PRBool aForceUnique); PRInt32 RulesMatching(nsISupportsArray* aSheets, nsIPresContext* aPresContext, nsIContent* aContent, @@ -461,11 +465,13 @@ PRInt32 StyleSetImpl::RulesMatching(nsISupportsArray* aSheets, } nsIStyleContext* StyleSetImpl::GetContext(nsIPresContext* aPresContext, nsIFrame* aParentFrame, - nsIStyleContext* aParentContext, nsISupportsArray* aRules) + nsIStyleContext* aParentContext, nsISupportsArray* aRules, + PRBool aForceUnique) { nsIStyleContext* result; - if ((nsnull != aParentContext) && (0 == aRules->Count()) && + if ((PR_FALSE == aForceUnique) && + (nsnull != aParentContext) && (0 == aRules->Count()) && (0 == aParentContext->GetStyleRuleCount())) { // this and parent are empty result = aParentContext; @@ -476,9 +482,16 @@ nsIStyleContext* StyleSetImpl::GetContext(nsIPresContext* aPresContext, nsIFrame #if USE_CONTEXT_HASH // check for cached ruleSet to context or create ContextKey tempKey(aParentContext, aRules); - result = (nsIStyleContext*)mStyleContexts.Get(&tempKey); + if (PR_FALSE == aForceUnique) { + result = (nsIStyleContext*)mStyleContexts.Get(&tempKey); + } else { + result = nsnull; + } if (nsnull == result) { if (NS_OK == NS_NewStyleContext(&result, aParentContext, aRules, aPresContext)) { + if (PR_TRUE == aForceUnique) { + result->ForceUnique(); + } tempKey.SetContext(result); mStyleContexts.Put(&tempKey, result); // hashtable clones key, so this is OK (table gets first ref) //fprintf(stdout, "+"); @@ -489,14 +502,18 @@ nsIStyleContext* StyleSetImpl::GetContext(nsIPresContext* aPresContext, nsIFrame } NS_ADDREF(result); // add ref for the caller #else - if (nsnull != aParentContext) { + if ((PR_FALSE == aForceUnique) && (nsnull != aParentContext)) { result = aParentContext->FindChildWithRules(aRules); } else { result = nsnull; } if (nsnull == result) { - NS_NewStyleContext(&result, aParentContext, aRules, aPresContext); + if (NS_OK == NS_NewStyleContext(&result, aParentContext, aRules, aPresContext)) { + if (PR_TRUE == aForceUnique) { + result->ForceUnique(); + } + } //fprintf(stdout, "+"); } else { @@ -509,7 +526,8 @@ nsIStyleContext* StyleSetImpl::GetContext(nsIPresContext* aPresContext, nsIFrame nsIStyleContext* StyleSetImpl::ResolveStyleFor(nsIPresContext* aPresContext, nsIContent* aContent, - nsIFrame* aParentFrame) + nsIFrame* aParentFrame, + PRBool aForceUnique) { nsIStyleContext* result = nsnull; nsIStyleContext* parentContext = nsnull; @@ -529,7 +547,7 @@ nsIStyleContext* StyleSetImpl::ResolveStyleFor(nsIPresContext* aPresContext, ruleCount += RulesMatching(mDocSheets, aPresContext, aContent, aParentFrame, rules); ruleCount += RulesMatching(mBackstopSheets, aPresContext, aContent, aParentFrame, rules); - result = GetContext(aPresContext, aParentFrame, parentContext, rules); + result = GetContext(aPresContext, aParentFrame, parentContext, rules, aForceUnique); NS_RELEASE(rules); } @@ -563,7 +581,8 @@ PRInt32 StyleSetImpl::RulesMatching(nsISupportsArray* aSheets, nsIStyleContext* StyleSetImpl::ResolvePseudoStyleFor(nsIPresContext* aPresContext, nsIAtom* aPseudoTag, - nsIFrame* aParentFrame) + nsIFrame* aParentFrame, + PRBool aForceUnique) { nsIStyleContext* result = nsnull; nsIStyleContext* parentContext = nsnull; @@ -583,7 +602,7 @@ nsIStyleContext* StyleSetImpl::ResolvePseudoStyleFor(nsIPresContext* aPresContex ruleCount += RulesMatching(mDocSheets, aPresContext, aPseudoTag, aParentFrame, rules); ruleCount += RulesMatching(mBackstopSheets, aPresContext, aPseudoTag, aParentFrame, rules); - result = GetContext(aPresContext, aParentFrame, parentContext, rules); + result = GetContext(aPresContext, aParentFrame, parentContext, rules, aForceUnique); NS_RELEASE(rules); } @@ -595,7 +614,8 @@ nsIStyleContext* StyleSetImpl::ResolvePseudoStyleFor(nsIPresContext* aPresContex nsIStyleContext* StyleSetImpl::ProbePseudoStyleFor(nsIPresContext* aPresContext, nsIAtom* aPseudoTag, - nsIFrame* aParentFrame) + nsIFrame* aParentFrame, + PRBool aForceUnique) { nsIStyleContext* result = nsnull; nsIStyleContext* parentContext = nsnull; @@ -616,7 +636,7 @@ nsIStyleContext* StyleSetImpl::ProbePseudoStyleFor(nsIPresContext* aPresContext, ruleCount += RulesMatching(mBackstopSheets, aPresContext, aPseudoTag, aParentFrame, rules); if (0 < ruleCount) { - result = GetContext(aPresContext, aParentFrame, parentContext, rules); + result = GetContext(aPresContext, aParentFrame, parentContext, rules, aForceUnique); } NS_RELEASE(rules); diff --git a/layout/base/nsPresContext.cpp b/layout/base/nsPresContext.cpp index c71250e5598f..0f4cd124d114 100644 --- a/layout/base/nsPresContext.cpp +++ b/layout/base/nsPresContext.cpp @@ -107,13 +107,14 @@ nsPresContext::GetShell() nsIStyleContext* nsPresContext::ResolveStyleContextFor(nsIContent* aContent, - nsIFrame* aParentFrame) + nsIFrame* aParentFrame, + PRBool aForceUnique) { nsIStyleContext* result = nsnull; nsIStyleSet* set = mShell->GetStyleSet(); if (nsnull != set) { - result = set->ResolveStyleFor(this, aContent, aParentFrame); + result = set->ResolveStyleFor(this, aContent, aParentFrame, aForceUnique); NS_RELEASE(set); } @@ -122,13 +123,14 @@ nsPresContext::ResolveStyleContextFor(nsIContent* aContent, nsIStyleContext* nsPresContext::ResolvePseudoStyleContextFor(nsIAtom* aPseudoTag, - nsIFrame* aParentFrame) + nsIFrame* aParentFrame, + PRBool aForceUnique) { nsIStyleContext* result = nsnull; nsIStyleSet* set = mShell->GetStyleSet(); if (nsnull != set) { - result = set->ResolvePseudoStyleFor(this, aPseudoTag, aParentFrame); + result = set->ResolvePseudoStyleFor(this, aPseudoTag, aParentFrame, aForceUnique); NS_RELEASE(set); } @@ -137,13 +139,14 @@ nsPresContext::ResolvePseudoStyleContextFor(nsIAtom* aPseudoTag, nsIStyleContext* nsPresContext::ProbePseudoStyleContextFor(nsIAtom* aPseudoTag, - nsIFrame* aParentFrame) + nsIFrame* aParentFrame, + PRBool aForceUnique) { nsIStyleContext* result = nsnull; nsIStyleSet* set = mShell->GetStyleSet(); if (nsnull != set) { - result = set->ProbePseudoStyleFor(this, aPseudoTag, aParentFrame); + result = set->ProbePseudoStyleFor(this, aPseudoTag, aParentFrame, aForceUnique); NS_RELEASE(set); } diff --git a/layout/base/src/nsPresContext.cpp b/layout/base/src/nsPresContext.cpp index c71250e5598f..0f4cd124d114 100644 --- a/layout/base/src/nsPresContext.cpp +++ b/layout/base/src/nsPresContext.cpp @@ -107,13 +107,14 @@ nsPresContext::GetShell() nsIStyleContext* nsPresContext::ResolveStyleContextFor(nsIContent* aContent, - nsIFrame* aParentFrame) + nsIFrame* aParentFrame, + PRBool aForceUnique) { nsIStyleContext* result = nsnull; nsIStyleSet* set = mShell->GetStyleSet(); if (nsnull != set) { - result = set->ResolveStyleFor(this, aContent, aParentFrame); + result = set->ResolveStyleFor(this, aContent, aParentFrame, aForceUnique); NS_RELEASE(set); } @@ -122,13 +123,14 @@ nsPresContext::ResolveStyleContextFor(nsIContent* aContent, nsIStyleContext* nsPresContext::ResolvePseudoStyleContextFor(nsIAtom* aPseudoTag, - nsIFrame* aParentFrame) + nsIFrame* aParentFrame, + PRBool aForceUnique) { nsIStyleContext* result = nsnull; nsIStyleSet* set = mShell->GetStyleSet(); if (nsnull != set) { - result = set->ResolvePseudoStyleFor(this, aPseudoTag, aParentFrame); + result = set->ResolvePseudoStyleFor(this, aPseudoTag, aParentFrame, aForceUnique); NS_RELEASE(set); } @@ -137,13 +139,14 @@ nsPresContext::ResolvePseudoStyleContextFor(nsIAtom* aPseudoTag, nsIStyleContext* nsPresContext::ProbePseudoStyleContextFor(nsIAtom* aPseudoTag, - nsIFrame* aParentFrame) + nsIFrame* aParentFrame, + PRBool aForceUnique) { nsIStyleContext* result = nsnull; nsIStyleSet* set = mShell->GetStyleSet(); if (nsnull != set) { - result = set->ProbePseudoStyleFor(this, aPseudoTag, aParentFrame); + result = set->ProbePseudoStyleFor(this, aPseudoTag, aParentFrame, aForceUnique); NS_RELEASE(set); } diff --git a/layout/base/src/nsPresContext.h b/layout/base/src/nsPresContext.h index 834a922b0c52..a21a92ae73ea 100644 --- a/layout/base/src/nsPresContext.h +++ b/layout/base/src/nsPresContext.h @@ -34,11 +34,14 @@ public: virtual void SetShell(nsIPresShell* aShell); virtual nsIPresShell* GetShell(); virtual nsIStyleContext* ResolveStyleContextFor(nsIContent* aContent, - nsIFrame* aParentFrame); + nsIFrame* aParentFrame, + PRBool aForceUnique = PR_FALSE); virtual nsIStyleContext* ResolvePseudoStyleContextFor(nsIAtom* aPseudoTag, - nsIFrame* aParentFrame); + nsIFrame* aParentFrame, + PRBool aForceUnique = PR_FALSE); virtual nsIStyleContext* ProbePseudoStyleContextFor(nsIAtom* aPseudoTag, - nsIFrame* aParentFrame); + nsIFrame* aParentFrame, + PRBool aForceUnique = PR_FALSE); virtual nsIFontMetrics* GetMetricsFor(const nsFont& aFont); virtual const nsFont& GetDefaultFont(void); NS_IMETHOD GetImageGroup(nsIImageGroup*& aGroupResult); diff --git a/layout/base/src/nsStyleSet.cpp b/layout/base/src/nsStyleSet.cpp index 0fb308580d7a..efbf059fb427 100644 --- a/layout/base/src/nsStyleSet.cpp +++ b/layout/base/src/nsStyleSet.cpp @@ -193,15 +193,18 @@ public: virtual nsIStyleContext* ResolveStyleFor(nsIPresContext* aPresContext, nsIContent* aContent, - nsIFrame* aParentFrame); + nsIFrame* aParentFrame, + PRBool aForceUnique = PR_FALSE); virtual nsIStyleContext* ResolvePseudoStyleFor(nsIPresContext* aPresContext, nsIAtom* aPseudoTag, - nsIFrame* aParentFrame); + nsIFrame* aParentFrame, + PRBool aForceUnique = PR_FALSE); virtual nsIStyleContext* ProbePseudoStyleFor(nsIPresContext* aPresContext, nsIAtom* aPseudoTag, - nsIFrame* aParentFrame); + nsIFrame* aParentFrame, + PRBool aForceUnique = PR_FALSE); // xxx style rules enumeration @@ -216,7 +219,8 @@ protected: virtual ~StyleSetImpl(); PRBool EnsureArray(nsISupportsArray** aArray); nsIStyleContext* GetContext(nsIPresContext* aPresContext, nsIFrame* aParentFrame, - nsIStyleContext* aParentContext, nsISupportsArray* aRules); + nsIStyleContext* aParentContext, nsISupportsArray* aRules, + PRBool aForceUnique); PRInt32 RulesMatching(nsISupportsArray* aSheets, nsIPresContext* aPresContext, nsIContent* aContent, @@ -461,11 +465,13 @@ PRInt32 StyleSetImpl::RulesMatching(nsISupportsArray* aSheets, } nsIStyleContext* StyleSetImpl::GetContext(nsIPresContext* aPresContext, nsIFrame* aParentFrame, - nsIStyleContext* aParentContext, nsISupportsArray* aRules) + nsIStyleContext* aParentContext, nsISupportsArray* aRules, + PRBool aForceUnique) { nsIStyleContext* result; - if ((nsnull != aParentContext) && (0 == aRules->Count()) && + if ((PR_FALSE == aForceUnique) && + (nsnull != aParentContext) && (0 == aRules->Count()) && (0 == aParentContext->GetStyleRuleCount())) { // this and parent are empty result = aParentContext; @@ -476,9 +482,16 @@ nsIStyleContext* StyleSetImpl::GetContext(nsIPresContext* aPresContext, nsIFrame #if USE_CONTEXT_HASH // check for cached ruleSet to context or create ContextKey tempKey(aParentContext, aRules); - result = (nsIStyleContext*)mStyleContexts.Get(&tempKey); + if (PR_FALSE == aForceUnique) { + result = (nsIStyleContext*)mStyleContexts.Get(&tempKey); + } else { + result = nsnull; + } if (nsnull == result) { if (NS_OK == NS_NewStyleContext(&result, aParentContext, aRules, aPresContext)) { + if (PR_TRUE == aForceUnique) { + result->ForceUnique(); + } tempKey.SetContext(result); mStyleContexts.Put(&tempKey, result); // hashtable clones key, so this is OK (table gets first ref) //fprintf(stdout, "+"); @@ -489,14 +502,18 @@ nsIStyleContext* StyleSetImpl::GetContext(nsIPresContext* aPresContext, nsIFrame } NS_ADDREF(result); // add ref for the caller #else - if (nsnull != aParentContext) { + if ((PR_FALSE == aForceUnique) && (nsnull != aParentContext)) { result = aParentContext->FindChildWithRules(aRules); } else { result = nsnull; } if (nsnull == result) { - NS_NewStyleContext(&result, aParentContext, aRules, aPresContext); + if (NS_OK == NS_NewStyleContext(&result, aParentContext, aRules, aPresContext)) { + if (PR_TRUE == aForceUnique) { + result->ForceUnique(); + } + } //fprintf(stdout, "+"); } else { @@ -509,7 +526,8 @@ nsIStyleContext* StyleSetImpl::GetContext(nsIPresContext* aPresContext, nsIFrame nsIStyleContext* StyleSetImpl::ResolveStyleFor(nsIPresContext* aPresContext, nsIContent* aContent, - nsIFrame* aParentFrame) + nsIFrame* aParentFrame, + PRBool aForceUnique) { nsIStyleContext* result = nsnull; nsIStyleContext* parentContext = nsnull; @@ -529,7 +547,7 @@ nsIStyleContext* StyleSetImpl::ResolveStyleFor(nsIPresContext* aPresContext, ruleCount += RulesMatching(mDocSheets, aPresContext, aContent, aParentFrame, rules); ruleCount += RulesMatching(mBackstopSheets, aPresContext, aContent, aParentFrame, rules); - result = GetContext(aPresContext, aParentFrame, parentContext, rules); + result = GetContext(aPresContext, aParentFrame, parentContext, rules, aForceUnique); NS_RELEASE(rules); } @@ -563,7 +581,8 @@ PRInt32 StyleSetImpl::RulesMatching(nsISupportsArray* aSheets, nsIStyleContext* StyleSetImpl::ResolvePseudoStyleFor(nsIPresContext* aPresContext, nsIAtom* aPseudoTag, - nsIFrame* aParentFrame) + nsIFrame* aParentFrame, + PRBool aForceUnique) { nsIStyleContext* result = nsnull; nsIStyleContext* parentContext = nsnull; @@ -583,7 +602,7 @@ nsIStyleContext* StyleSetImpl::ResolvePseudoStyleFor(nsIPresContext* aPresContex ruleCount += RulesMatching(mDocSheets, aPresContext, aPseudoTag, aParentFrame, rules); ruleCount += RulesMatching(mBackstopSheets, aPresContext, aPseudoTag, aParentFrame, rules); - result = GetContext(aPresContext, aParentFrame, parentContext, rules); + result = GetContext(aPresContext, aParentFrame, parentContext, rules, aForceUnique); NS_RELEASE(rules); } @@ -595,7 +614,8 @@ nsIStyleContext* StyleSetImpl::ResolvePseudoStyleFor(nsIPresContext* aPresContex nsIStyleContext* StyleSetImpl::ProbePseudoStyleFor(nsIPresContext* aPresContext, nsIAtom* aPseudoTag, - nsIFrame* aParentFrame) + nsIFrame* aParentFrame, + PRBool aForceUnique) { nsIStyleContext* result = nsnull; nsIStyleContext* parentContext = nsnull; @@ -616,7 +636,7 @@ nsIStyleContext* StyleSetImpl::ProbePseudoStyleFor(nsIPresContext* aPresContext, ruleCount += RulesMatching(mBackstopSheets, aPresContext, aPseudoTag, aParentFrame, rules); if (0 < ruleCount) { - result = GetContext(aPresContext, aParentFrame, parentContext, rules); + result = GetContext(aPresContext, aParentFrame, parentContext, rules, aForceUnique); } NS_RELEASE(rules); diff --git a/layout/style/nsStyleSet.cpp b/layout/style/nsStyleSet.cpp index 0fb308580d7a..efbf059fb427 100644 --- a/layout/style/nsStyleSet.cpp +++ b/layout/style/nsStyleSet.cpp @@ -193,15 +193,18 @@ public: virtual nsIStyleContext* ResolveStyleFor(nsIPresContext* aPresContext, nsIContent* aContent, - nsIFrame* aParentFrame); + nsIFrame* aParentFrame, + PRBool aForceUnique = PR_FALSE); virtual nsIStyleContext* ResolvePseudoStyleFor(nsIPresContext* aPresContext, nsIAtom* aPseudoTag, - nsIFrame* aParentFrame); + nsIFrame* aParentFrame, + PRBool aForceUnique = PR_FALSE); virtual nsIStyleContext* ProbePseudoStyleFor(nsIPresContext* aPresContext, nsIAtom* aPseudoTag, - nsIFrame* aParentFrame); + nsIFrame* aParentFrame, + PRBool aForceUnique = PR_FALSE); // xxx style rules enumeration @@ -216,7 +219,8 @@ protected: virtual ~StyleSetImpl(); PRBool EnsureArray(nsISupportsArray** aArray); nsIStyleContext* GetContext(nsIPresContext* aPresContext, nsIFrame* aParentFrame, - nsIStyleContext* aParentContext, nsISupportsArray* aRules); + nsIStyleContext* aParentContext, nsISupportsArray* aRules, + PRBool aForceUnique); PRInt32 RulesMatching(nsISupportsArray* aSheets, nsIPresContext* aPresContext, nsIContent* aContent, @@ -461,11 +465,13 @@ PRInt32 StyleSetImpl::RulesMatching(nsISupportsArray* aSheets, } nsIStyleContext* StyleSetImpl::GetContext(nsIPresContext* aPresContext, nsIFrame* aParentFrame, - nsIStyleContext* aParentContext, nsISupportsArray* aRules) + nsIStyleContext* aParentContext, nsISupportsArray* aRules, + PRBool aForceUnique) { nsIStyleContext* result; - if ((nsnull != aParentContext) && (0 == aRules->Count()) && + if ((PR_FALSE == aForceUnique) && + (nsnull != aParentContext) && (0 == aRules->Count()) && (0 == aParentContext->GetStyleRuleCount())) { // this and parent are empty result = aParentContext; @@ -476,9 +482,16 @@ nsIStyleContext* StyleSetImpl::GetContext(nsIPresContext* aPresContext, nsIFrame #if USE_CONTEXT_HASH // check for cached ruleSet to context or create ContextKey tempKey(aParentContext, aRules); - result = (nsIStyleContext*)mStyleContexts.Get(&tempKey); + if (PR_FALSE == aForceUnique) { + result = (nsIStyleContext*)mStyleContexts.Get(&tempKey); + } else { + result = nsnull; + } if (nsnull == result) { if (NS_OK == NS_NewStyleContext(&result, aParentContext, aRules, aPresContext)) { + if (PR_TRUE == aForceUnique) { + result->ForceUnique(); + } tempKey.SetContext(result); mStyleContexts.Put(&tempKey, result); // hashtable clones key, so this is OK (table gets first ref) //fprintf(stdout, "+"); @@ -489,14 +502,18 @@ nsIStyleContext* StyleSetImpl::GetContext(nsIPresContext* aPresContext, nsIFrame } NS_ADDREF(result); // add ref for the caller #else - if (nsnull != aParentContext) { + if ((PR_FALSE == aForceUnique) && (nsnull != aParentContext)) { result = aParentContext->FindChildWithRules(aRules); } else { result = nsnull; } if (nsnull == result) { - NS_NewStyleContext(&result, aParentContext, aRules, aPresContext); + if (NS_OK == NS_NewStyleContext(&result, aParentContext, aRules, aPresContext)) { + if (PR_TRUE == aForceUnique) { + result->ForceUnique(); + } + } //fprintf(stdout, "+"); } else { @@ -509,7 +526,8 @@ nsIStyleContext* StyleSetImpl::GetContext(nsIPresContext* aPresContext, nsIFrame nsIStyleContext* StyleSetImpl::ResolveStyleFor(nsIPresContext* aPresContext, nsIContent* aContent, - nsIFrame* aParentFrame) + nsIFrame* aParentFrame, + PRBool aForceUnique) { nsIStyleContext* result = nsnull; nsIStyleContext* parentContext = nsnull; @@ -529,7 +547,7 @@ nsIStyleContext* StyleSetImpl::ResolveStyleFor(nsIPresContext* aPresContext, ruleCount += RulesMatching(mDocSheets, aPresContext, aContent, aParentFrame, rules); ruleCount += RulesMatching(mBackstopSheets, aPresContext, aContent, aParentFrame, rules); - result = GetContext(aPresContext, aParentFrame, parentContext, rules); + result = GetContext(aPresContext, aParentFrame, parentContext, rules, aForceUnique); NS_RELEASE(rules); } @@ -563,7 +581,8 @@ PRInt32 StyleSetImpl::RulesMatching(nsISupportsArray* aSheets, nsIStyleContext* StyleSetImpl::ResolvePseudoStyleFor(nsIPresContext* aPresContext, nsIAtom* aPseudoTag, - nsIFrame* aParentFrame) + nsIFrame* aParentFrame, + PRBool aForceUnique) { nsIStyleContext* result = nsnull; nsIStyleContext* parentContext = nsnull; @@ -583,7 +602,7 @@ nsIStyleContext* StyleSetImpl::ResolvePseudoStyleFor(nsIPresContext* aPresContex ruleCount += RulesMatching(mDocSheets, aPresContext, aPseudoTag, aParentFrame, rules); ruleCount += RulesMatching(mBackstopSheets, aPresContext, aPseudoTag, aParentFrame, rules); - result = GetContext(aPresContext, aParentFrame, parentContext, rules); + result = GetContext(aPresContext, aParentFrame, parentContext, rules, aForceUnique); NS_RELEASE(rules); } @@ -595,7 +614,8 @@ nsIStyleContext* StyleSetImpl::ResolvePseudoStyleFor(nsIPresContext* aPresContex nsIStyleContext* StyleSetImpl::ProbePseudoStyleFor(nsIPresContext* aPresContext, nsIAtom* aPseudoTag, - nsIFrame* aParentFrame) + nsIFrame* aParentFrame, + PRBool aForceUnique) { nsIStyleContext* result = nsnull; nsIStyleContext* parentContext = nsnull; @@ -616,7 +636,7 @@ nsIStyleContext* StyleSetImpl::ProbePseudoStyleFor(nsIPresContext* aPresContext, ruleCount += RulesMatching(mBackstopSheets, aPresContext, aPseudoTag, aParentFrame, rules); if (0 < ruleCount) { - result = GetContext(aPresContext, aParentFrame, parentContext, rules); + result = GetContext(aPresContext, aParentFrame, parentContext, rules, aForceUnique); } NS_RELEASE(rules);