Bug 528134. Hand out the style context with the rulenode. r=dbaron

This commit is contained in:
Boris Zbarsky 2009-11-25 00:35:55 -05:00
Родитель a2a597d568
Коммит 229c0bea7c
2 изменённых файлов: 10 добавлений и 2 удалений

Просмотреть файл

@ -164,7 +164,8 @@ inDOMUtils::GetCSSStyleRules(nsIDOMElement *aElement,
nsRuleNode* ruleNode = nsnull;
nsCOMPtr<nsIContent> content = do_QueryInterface(aElement);
GetRuleNodeForContent(content, &ruleNode);
nsRefPtr<nsStyleContext> styleContext;
GetRuleNodeForContent(content, getter_AddRefs(styleContext), &ruleNode);
if (!ruleNode) {
// This can fail for content nodes that are not in the document or
// if the document they're in doesn't have a presshell. Bail out.
@ -271,9 +272,12 @@ inDOMUtils::GetContentState(nsIDOMElement *aElement, PRInt32* aState)
}
/* static */ nsresult
inDOMUtils::GetRuleNodeForContent(nsIContent* aContent, nsRuleNode** aRuleNode)
inDOMUtils::GetRuleNodeForContent(nsIContent* aContent,
nsStyleContext** aStyleContext,
nsRuleNode** aRuleNode)
{
*aRuleNode = nsnull;
*aStyleContext = nsnull;
nsIDocument* doc = aContent->GetDocument();
NS_ENSURE_TRUE(doc, NS_ERROR_UNEXPECTED);
@ -284,5 +288,6 @@ inDOMUtils::GetRuleNodeForContent(nsIContent* aContent, nsRuleNode** aRuleNode)
nsRefPtr<nsStyleContext> sContext =
nsComputedDOMStyle::GetStyleContextForContent(aContent, nsnull, presShell);
*aRuleNode = sContext->GetRuleNode();
sContext.forget(aStyleContext);
return NS_OK;
}

Просмотреть файл

@ -44,6 +44,7 @@
#include "nsISupportsArray.h"
class nsRuleNode;
class nsStyleContext;
class inDOMUtils : public inIDOMUtils
{
@ -55,7 +56,9 @@ public:
virtual ~inDOMUtils();
private:
// aStyleContext must be released by the caller once he's done with aRuleNode.
static nsresult GetRuleNodeForContent(nsIContent* aContent,
nsStyleContext** aStyleContext,
nsRuleNode** aRuleNode);
};