| Index: Source/core/inspector/InspectorCSSAgent.cpp
|
| diff --git a/Source/core/inspector/InspectorCSSAgent.cpp b/Source/core/inspector/InspectorCSSAgent.cpp
|
| index 90e3cd0d99ddee710f5d9e75974d751421ebfa02..81a2d3bcb3c88b717c73cfaa07e69e9467994196 100644
|
| --- a/Source/core/inspector/InspectorCSSAgent.cpp
|
| +++ b/Source/core/inspector/InspectorCSSAgent.cpp
|
| @@ -701,7 +701,7 @@ void InspectorCSSAgent::getMediaQueries(ErrorString* errorString, RefPtr<TypeBui
|
| }
|
| }
|
|
|
| -void InspectorCSSAgent::getMatchedStylesForNode(ErrorString* errorString, int nodeId, RefPtr<TypeBuilder::Array<TypeBuilder::CSS::RuleMatch>>& matchedCSSRules, RefPtr<TypeBuilder::Array<TypeBuilder::CSS::PseudoIdMatches>>& pseudoIdMatches, RefPtr<TypeBuilder::Array<TypeBuilder::CSS::InheritedStyleEntry>>& inheritedEntries)
|
| +void InspectorCSSAgent::getMatchedStylesForNode(ErrorString* errorString, int nodeId, RefPtr<TypeBuilder::CSS::CSSStyle>& inlineStyle, RefPtr<TypeBuilder::CSS::CSSStyle>& attributesStyle, RefPtr<TypeBuilder::Array<TypeBuilder::CSS::RuleMatch>>& matchedCSSRules, RefPtr<TypeBuilder::Array<TypeBuilder::CSS::PseudoIdMatches>>& pseudoIdMatches, RefPtr<TypeBuilder::Array<TypeBuilder::CSS::InheritedStyleEntry>>& inheritedEntries)
|
| {
|
| Element* element = elementForId(errorString, nodeId);
|
| if (!element) {
|
| @@ -736,38 +736,46 @@ void InspectorCSSAgent::getMatchedStylesForNode(ErrorString* errorString, int no
|
| matchedCSSRules = buildArrayForMatchedRuleList(matchedRules.get(), originalElement, NOPSEUDO);
|
|
|
| // Pseudo elements.
|
| - if (!elementPseudoId) {
|
| - RefPtr<TypeBuilder::Array<TypeBuilder::CSS::PseudoIdMatches> > pseudoElements = TypeBuilder::Array<TypeBuilder::CSS::PseudoIdMatches>::create();
|
| - for (PseudoId pseudoId = FIRST_PUBLIC_PSEUDOID; pseudoId < AFTER_LAST_INTERNAL_PSEUDOID; pseudoId = static_cast<PseudoId>(pseudoId + 1)) {
|
| - RefPtrWillBeRawPtr<CSSRuleList> matchedRules = styleResolver.pseudoCSSRulesForElement(element, pseudoId, StyleResolver::AllCSSRules);
|
| - if (matchedRules && matchedRules->length()) {
|
| - RefPtr<TypeBuilder::CSS::PseudoIdMatches> matches = TypeBuilder::CSS::PseudoIdMatches::create()
|
| - .setPseudoId(static_cast<int>(pseudoId))
|
| - .setMatches(buildArrayForMatchedRuleList(matchedRules.get(), element, pseudoId));
|
| - pseudoElements->addItem(matches.release());
|
| - }
|
| - }
|
| - pseudoIdMatches = pseudoElements.release();
|
| -
|
| - // Inherited styles.
|
| - RefPtr<TypeBuilder::Array<TypeBuilder::CSS::InheritedStyleEntry> > entries = TypeBuilder::Array<TypeBuilder::CSS::InheritedStyleEntry>::create();
|
| - Element* parentElement = element->parentOrShadowHostElement();
|
| - while (parentElement) {
|
| - StyleResolver& parentStyleResolver = parentElement->ownerDocument()->ensureStyleResolver();
|
| - RefPtrWillBeRawPtr<CSSRuleList> parentMatchedRules = parentStyleResolver.cssRulesForElement(parentElement, StyleResolver::AllCSSRules);
|
| - RefPtr<TypeBuilder::CSS::InheritedStyleEntry> entry = TypeBuilder::CSS::InheritedStyleEntry::create()
|
| - .setMatchedCSSRules(buildArrayForMatchedRuleList(parentMatchedRules.get(), parentElement, NOPSEUDO));
|
| - if (parentElement->style() && parentElement->style()->length()) {
|
| - InspectorStyleSheetForInlineStyle* styleSheet = asInspectorStyleSheet(parentElement);
|
| - if (styleSheet)
|
| - entry->setInlineStyle(styleSheet->buildObjectForStyle(styleSheet->inlineStyle()));
|
| - }
|
| + if (elementPseudoId)
|
| + return;
|
|
|
| - entries->addItem(entry.release());
|
| - parentElement = parentElement->parentOrShadowHostElement();
|
| + InspectorStyleSheetForInlineStyle* inlineStyleSheet = asInspectorStyleSheet(element);
|
| + if (inlineStyleSheet) {
|
| + inlineStyle = inlineStyleSheet->buildObjectForStyle(element->style());
|
| + RefPtr<TypeBuilder::CSS::CSSStyle> attributes = buildObjectForAttributesStyle(element);
|
| + attributesStyle = attributes ? attributes.release() : nullptr;
|
| + }
|
| +
|
| + RefPtr<TypeBuilder::Array<TypeBuilder::CSS::PseudoIdMatches>> pseudoElements = TypeBuilder::Array<TypeBuilder::CSS::PseudoIdMatches>::create();
|
| + for (PseudoId pseudoId = FIRST_PUBLIC_PSEUDOID; pseudoId < AFTER_LAST_INTERNAL_PSEUDOID; pseudoId = static_cast<PseudoId>(pseudoId + 1)) {
|
| + RefPtrWillBeRawPtr<CSSRuleList> matchedRules = styleResolver.pseudoCSSRulesForElement(element, pseudoId, StyleResolver::AllCSSRules);
|
| + if (matchedRules && matchedRules->length()) {
|
| + RefPtr<TypeBuilder::CSS::PseudoIdMatches> matches = TypeBuilder::CSS::PseudoIdMatches::create()
|
| + .setPseudoId(static_cast<int>(pseudoId))
|
| + .setMatches(buildArrayForMatchedRuleList(matchedRules.get(), element, pseudoId));
|
| + pseudoElements->addItem(matches.release());
|
| }
|
| - inheritedEntries = entries.release();
|
| }
|
| + pseudoIdMatches = pseudoElements.release();
|
| +
|
| + // Inherited styles.
|
| + RefPtr<TypeBuilder::Array<TypeBuilder::CSS::InheritedStyleEntry>> entries = TypeBuilder::Array<TypeBuilder::CSS::InheritedStyleEntry>::create();
|
| + Element* parentElement = element->parentOrShadowHostElement();
|
| + while (parentElement) {
|
| + StyleResolver& parentStyleResolver = parentElement->ownerDocument()->ensureStyleResolver();
|
| + RefPtrWillBeRawPtr<CSSRuleList> parentMatchedRules = parentStyleResolver.cssRulesForElement(parentElement, StyleResolver::AllCSSRules);
|
| + RefPtr<TypeBuilder::CSS::InheritedStyleEntry> entry = TypeBuilder::CSS::InheritedStyleEntry::create()
|
| + .setMatchedCSSRules(buildArrayForMatchedRuleList(parentMatchedRules.get(), parentElement, NOPSEUDO));
|
| + if (parentElement->style() && parentElement->style()->length()) {
|
| + InspectorStyleSheetForInlineStyle* styleSheet = asInspectorStyleSheet(parentElement);
|
| + if (styleSheet)
|
| + entry->setInlineStyle(styleSheet->buildObjectForStyle(styleSheet->inlineStyle()));
|
| + }
|
| +
|
| + entries->addItem(entry.release());
|
| + parentElement = parentElement->parentOrShadowHostElement();
|
| + }
|
| + inheritedEntries = entries.release();
|
| }
|
|
|
| void InspectorCSSAgent::getInlineStylesForNode(ErrorString* errorString, int nodeId, RefPtr<TypeBuilder::CSS::CSSStyle>& inlineStyle, RefPtr<TypeBuilder::CSS::CSSStyle>& attributesStyle)
|
|
|