зеркало из https://github.com/mozilla/gecko-dev.git
Bug 528134. Hand out the style context with the rulenode. r=dbaron
This commit is contained in:
Родитель
a2a597d568
Коммит
229c0bea7c
|
@ -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);
|
||||
};
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче