Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(660)

Unified Diff: Source/core/css/SelectorChecker.cpp

Issue 53683007: Have SelectorQuery API take rootNode by reference (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/css/SelectorChecker.h ('k') | Source/core/css/SelectorCheckerFastPath.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/css/SelectorChecker.cpp
diff --git a/Source/core/css/SelectorChecker.cpp b/Source/core/css/SelectorChecker.cpp
index 34626b2c94ffd543148ff234cfbb413a30f65ac9..36ea229c1f94c6e6f34f26bd7edeeac469c8eee8 100644
--- a/Source/core/css/SelectorChecker.cpp
+++ b/Source/core/css/SelectorChecker.cpp
@@ -380,11 +380,11 @@ static bool attributeValueMatches(const Attribute* attributeItem, CSSSelector::M
return true;
}
-static bool anyAttributeMatches(Element* element, CSSSelector::Match match, const QualifiedName& selectorAttr, const AtomicString& selectorValue, bool caseSensitive)
+static bool anyAttributeMatches(Element& element, CSSSelector::Match match, const QualifiedName& selectorAttr, const AtomicString& selectorValue, bool caseSensitive)
{
- ASSERT(element->hasAttributesWithoutUpdate());
- for (size_t i = 0; i < element->attributeCount(); ++i) {
- const Attribute* attributeItem = element->attributeItem(i);
+ ASSERT(element.hasAttributesWithoutUpdate());
+ for (size_t i = 0; i < element.attributeCount(); ++i) {
+ const Attribute* attributeItem = element.attributeItem(i);
if (!attributeItem->matches(selectorAttr))
continue;
@@ -399,9 +399,9 @@ static bool anyAttributeMatches(Element* element, CSSSelector::Match match, cons
template<typename SiblingTraversalStrategy>
bool SelectorChecker::checkOne(const SelectorCheckingContext& context, const SiblingTraversalStrategy& siblingTraversalStrategy) const
{
- Element* const & element = context.element;
+ ASSERT(context.element);
+ Element& element = *context.element;
const CSSSelector* const & selector = context.selector;
- ASSERT(element);
ASSERT(selector);
bool elementIsHostInItsShadowTree = isHostInItsShadowTree(element, context.behaviorAtBoundary, context.scope);
@@ -409,15 +409,15 @@ bool SelectorChecker::checkOne(const SelectorCheckingContext& context, const Sib
return SelectorChecker::tagMatches(element, selector->tagQName(), elementIsHostInItsShadowTree ? MatchingHostInItsShadowTree : MatchingElement);
if (selector->m_match == CSSSelector::Class)
- return element->hasClass() && element->classNames().contains(selector->value()) && !elementIsHostInItsShadowTree;
+ return element.hasClass() && element.classNames().contains(selector->value()) && !elementIsHostInItsShadowTree;
if (selector->m_match == CSSSelector::Id)
- return element->hasID() && element->idForStyleResolution() == selector->value() && !elementIsHostInItsShadowTree;
+ return element.hasID() && element.idForStyleResolution() == selector->value() && !elementIsHostInItsShadowTree;
if (selector->isAttributeSelector()) {
const QualifiedName& attr = selector->attribute();
- if (!element->hasAttributes() || elementIsHostInItsShadowTree)
+ if (!element.hasAttributes() || elementIsHostInItsShadowTree)
return false;
bool caseSensitive = !m_documentIsHTML || HTMLDocument::isCaseSensitiveAttribute(attr);
@@ -446,10 +446,10 @@ bool SelectorChecker::checkOne(const SelectorCheckingContext& context, const Sib
} else if (context.hasScrollbarPseudo) {
// CSS scrollbars match a specific subset of pseudo classes, and they have specialized rules for each
// (since there are no elements involved).
- return checkScrollbarPseudoClass(context, &element->document(), selector);
+ return checkScrollbarPseudoClass(context, &element.document(), selector);
} else if (context.hasSelectionPseudo) {
if (selector->pseudoType() == CSSSelector::PseudoWindowInactive)
- return !element->document().page()->focusController().isActive();
+ return !element.document().page()->focusController().isActive();
}
// Normal element pseudo class checking.
@@ -460,7 +460,7 @@ bool SelectorChecker::checkOne(const SelectorCheckingContext& context, const Sib
case CSSSelector::PseudoEmpty:
{
bool result = true;
- for (Node* n = element->firstChild(); n; n = n->nextSibling()) {
+ for (Node* n = element.firstChild(); n; n = n->nextSibling()) {
if (n->isElementNode()) {
result = false;
break;
@@ -474,20 +474,20 @@ bool SelectorChecker::checkOne(const SelectorCheckingContext& context, const Sib
}
}
if (m_mode == ResolvingStyle) {
- element->setStyleAffectedByEmpty();
+ element.setStyleAffectedByEmpty();
if (context.elementStyle)
context.elementStyle->setEmptyState(result);
- else if (element->renderStyle() && (element->document().styleEngine()->usesSiblingRules() || element->renderStyle()->unique()))
- element->renderStyle()->setEmptyState(result);
+ else if (element.renderStyle() && (element.document().styleEngine()->usesSiblingRules() || element.renderStyle()->unique()))
+ element.renderStyle()->setEmptyState(result);
}
return result;
}
case CSSSelector::PseudoFirstChild:
// first-child matches the first child that is an element
- if (Element* parent = element->parentElement()) {
- bool result = siblingTraversalStrategy.isFirstChild(element);
+ if (Element* parent = element.parentElement()) {
+ bool result = siblingTraversalStrategy.isFirstChild(&element);
if (m_mode == ResolvingStyle) {
- RenderStyle* childStyle = context.elementStyle ? context.elementStyle : element->renderStyle();
+ RenderStyle* childStyle = context.elementStyle ? context.elementStyle : element.renderStyle();
parent->setChildrenAffectedByFirstChildRules();
if (result && childStyle)
childStyle->setFirstChildState();
@@ -497,8 +497,8 @@ bool SelectorChecker::checkOne(const SelectorCheckingContext& context, const Sib
break;
case CSSSelector::PseudoFirstOfType:
// first-of-type matches the first element of its type
- if (Element* parent = element->parentElement()) {
- bool result = siblingTraversalStrategy.isFirstOfType(element, element->tagQName());
+ if (Element* parent = element.parentElement()) {
+ bool result = siblingTraversalStrategy.isFirstOfType(&element, element.tagQName());
if (m_mode == ResolvingStyle)
parent->setChildrenAffectedByForwardPositionalRules();
return result;
@@ -506,10 +506,10 @@ bool SelectorChecker::checkOne(const SelectorCheckingContext& context, const Sib
break;
case CSSSelector::PseudoLastChild:
// last-child matches the last child that is an element
- if (Element* parent = element->parentElement()) {
- bool result = parent->isFinishedParsingChildren() && siblingTraversalStrategy.isLastChild(element);
+ if (Element* parent = element.parentElement()) {
+ bool result = parent->isFinishedParsingChildren() && siblingTraversalStrategy.isLastChild(&element);
if (m_mode == ResolvingStyle) {
- RenderStyle* childStyle = context.elementStyle ? context.elementStyle : element->renderStyle();
+ RenderStyle* childStyle = context.elementStyle ? context.elementStyle : element.renderStyle();
parent->setChildrenAffectedByLastChildRules();
if (result && childStyle)
childStyle->setLastChildState();
@@ -519,20 +519,20 @@ bool SelectorChecker::checkOne(const SelectorCheckingContext& context, const Sib
break;
case CSSSelector::PseudoLastOfType:
// last-of-type matches the last element of its type
- if (Element* parent = element->parentElement()) {
+ if (Element* parent = element.parentElement()) {
if (m_mode == ResolvingStyle)
parent->setChildrenAffectedByBackwardPositionalRules();
if (!parent->isFinishedParsingChildren())
return false;
- return siblingTraversalStrategy.isLastOfType(element, element->tagQName());
+ return siblingTraversalStrategy.isLastOfType(&element, element.tagQName());
}
break;
case CSSSelector::PseudoOnlyChild:
- if (Element* parent = element->parentElement()) {
- bool firstChild = siblingTraversalStrategy.isFirstChild(element);
- bool onlyChild = firstChild && parent->isFinishedParsingChildren() && siblingTraversalStrategy.isLastChild(element);
+ if (Element* parent = element.parentElement()) {
+ bool firstChild = siblingTraversalStrategy.isFirstChild(&element);
+ bool onlyChild = firstChild && parent->isFinishedParsingChildren() && siblingTraversalStrategy.isLastChild(&element);
if (m_mode == ResolvingStyle) {
- RenderStyle* childStyle = context.elementStyle ? context.elementStyle : element->renderStyle();
+ RenderStyle* childStyle = context.elementStyle ? context.elementStyle : element.renderStyle();
parent->setChildrenAffectedByFirstChildRules();
parent->setChildrenAffectedByLastChildRules();
if (firstChild && childStyle)
@@ -545,24 +545,24 @@ bool SelectorChecker::checkOne(const SelectorCheckingContext& context, const Sib
break;
case CSSSelector::PseudoOnlyOfType:
// FIXME: This selector is very slow.
- if (Element* parent = element->parentElement()) {
+ if (Element* parent = element.parentElement()) {
if (m_mode == ResolvingStyle) {
parent->setChildrenAffectedByForwardPositionalRules();
parent->setChildrenAffectedByBackwardPositionalRules();
}
if (!parent->isFinishedParsingChildren())
return false;
- return siblingTraversalStrategy.isFirstOfType(element, element->tagQName()) && siblingTraversalStrategy.isLastOfType(element, element->tagQName());
+ return siblingTraversalStrategy.isFirstOfType(&element, element.tagQName()) && siblingTraversalStrategy.isLastOfType(&element, element.tagQName());
}
break;
case CSSSelector::PseudoNthChild:
if (!selector->parseNth())
break;
- if (Element* parent = element->parentElement()) {
- int count = 1 + siblingTraversalStrategy.countElementsBefore(element);
+ if (Element* parent = element.parentElement()) {
+ int count = 1 + siblingTraversalStrategy.countElementsBefore(&element);
if (m_mode == ResolvingStyle) {
- RenderStyle* childStyle = context.elementStyle ? context.elementStyle : element->renderStyle();
- element->setChildIndex(count);
+ RenderStyle* childStyle = context.elementStyle ? context.elementStyle : element.renderStyle();
+ element.setChildIndex(count);
if (childStyle)
childStyle->setUnique();
parent->setChildrenAffectedByForwardPositionalRules();
@@ -575,8 +575,8 @@ bool SelectorChecker::checkOne(const SelectorCheckingContext& context, const Sib
case CSSSelector::PseudoNthOfType:
if (!selector->parseNth())
break;
- if (Element* parent = element->parentElement()) {
- int count = 1 + siblingTraversalStrategy.countElementsOfTypeBefore(element, element->tagQName());
+ if (Element* parent = element.parentElement()) {
+ int count = 1 + siblingTraversalStrategy.countElementsOfTypeBefore(&element, element.tagQName());
if (m_mode == ResolvingStyle)
parent->setChildrenAffectedByForwardPositionalRules();
@@ -587,12 +587,12 @@ bool SelectorChecker::checkOne(const SelectorCheckingContext& context, const Sib
case CSSSelector::PseudoNthLastChild:
if (!selector->parseNth())
break;
- if (Element* parent = element->parentElement()) {
+ if (Element* parent = element.parentElement()) {
if (m_mode == ResolvingStyle)
parent->setChildrenAffectedByBackwardPositionalRules();
if (!parent->isFinishedParsingChildren())
return false;
- int count = 1 + siblingTraversalStrategy.countElementsAfter(element);
+ int count = 1 + siblingTraversalStrategy.countElementsAfter(&element);
if (selector->matchNth(count))
return true;
}
@@ -600,19 +600,19 @@ bool SelectorChecker::checkOne(const SelectorCheckingContext& context, const Sib
case CSSSelector::PseudoNthLastOfType:
if (!selector->parseNth())
break;
- if (Element* parent = element->parentElement()) {
+ if (Element* parent = element.parentElement()) {
if (m_mode == ResolvingStyle)
parent->setChildrenAffectedByBackwardPositionalRules();
if (!parent->isFinishedParsingChildren())
return false;
- int count = 1 + siblingTraversalStrategy.countElementsOfTypeAfter(element, element->tagQName());
+ int count = 1 + siblingTraversalStrategy.countElementsOfTypeAfter(&element, element.tagQName());
if (selector->matchNth(count))
return true;
}
break;
case CSSSelector::PseudoTarget:
- if (element == element->document().cssTarget())
+ if (element == element.document().cssTarget())
return true;
break;
case CSSSelector::PseudoAny:
@@ -628,24 +628,24 @@ bool SelectorChecker::checkOne(const SelectorCheckingContext& context, const Sib
}
break;
case CSSSelector::PseudoAutofill:
- if (!element || !element->isFormControlElement())
+ if (!element.isFormControlElement())
break;
- return toHTMLFormControlElement(element)->isAutofilled();
+ return toHTMLFormControlElement(element).isAutofilled();
case CSSSelector::PseudoAnyLink:
case CSSSelector::PseudoLink:
// :visited and :link matches are separated later when applying the style. Here both classes match all links...
- return element->isLink();
+ return element.isLink();
case CSSSelector::PseudoVisited:
// ...except if :visited matching is disabled for ancestor/sibling matching.
- return element->isLink() && context.visitedMatchType == VisitedMatchEnabled;
+ return element.isLink() && context.visitedMatchType == VisitedMatchEnabled;
case CSSSelector::PseudoDrag:
if (m_mode == ResolvingStyle) {
if (context.elementStyle)
context.elementStyle->setAffectedByDrag();
else
- element->setChildrenAffectedByDrag(true);
+ element.setChildrenAffectedByDrag(true);
}
- if (element->renderer() && element->renderer()->isDragging())
+ if (element.renderer() && element.renderer()->isDragging())
return true;
break;
case CSSSelector::PseudoFocus:
@@ -653,92 +653,86 @@ bool SelectorChecker::checkOne(const SelectorCheckingContext& context, const Sib
case CSSSelector::PseudoHover:
// If we're in quirks mode, then hover should never match anchors with no
// href and *:hover should not match anything. This is important for sites like wsj.com.
- if (m_strictParsing || context.isSubSelector || (selector->m_match == CSSSelector::Tag && selector->tagQName() != anyQName() && !isHTMLAnchorElement(element)) || element->isLink()) {
+ if (m_strictParsing || context.isSubSelector || (selector->m_match == CSSSelector::Tag && selector->tagQName() != anyQName() && !isHTMLAnchorElement(element)) || element.isLink()) {
if (m_mode == ResolvingStyle) {
if (context.elementStyle)
context.elementStyle->setAffectedByHover();
else
- element->setChildrenAffectedByHover(true);
+ element.setChildrenAffectedByHover(true);
}
- if (element->hovered() || InspectorInstrumentation::forcePseudoState(element, CSSSelector::PseudoHover))
+ if (element.hovered() || InspectorInstrumentation::forcePseudoState(&element, CSSSelector::PseudoHover))
return true;
}
break;
case CSSSelector::PseudoActive:
// If we're in quirks mode, then :active should never match anchors with no
// href and *:active should not match anything.
- if (m_strictParsing || context.isSubSelector || (selector->m_match == CSSSelector::Tag && selector->tagQName() != anyQName() && !isHTMLAnchorElement(element)) || element->isLink()) {
+ if (m_strictParsing || context.isSubSelector || (selector->m_match == CSSSelector::Tag && selector->tagQName() != anyQName() && !isHTMLAnchorElement(element)) || element.isLink()) {
if (m_mode == ResolvingStyle) {
if (context.elementStyle)
context.elementStyle->setAffectedByActive();
else
- element->setChildrenAffectedByActive(true);
+ element.setChildrenAffectedByActive(true);
}
- if (element->active() || InspectorInstrumentation::forcePseudoState(element, CSSSelector::PseudoActive))
+ if (element.active() || InspectorInstrumentation::forcePseudoState(&element, CSSSelector::PseudoActive))
return true;
}
break;
case CSSSelector::PseudoEnabled:
- if (element && (element->isFormControlElement() || element->hasTagName(optionTag) || isHTMLOptGroupElement(element)))
- return !element->isDisabledFormControl();
+ if (element.isFormControlElement() || element.hasTagName(optionTag) || isHTMLOptGroupElement(element))
+ return !element.isDisabledFormControl();
break;
case CSSSelector::PseudoFullPageMedia:
- return element && element->document().isMediaDocument();
+ return element.document().isMediaDocument();
break;
case CSSSelector::PseudoDefault:
- return element && element->isDefaultButtonForForm();
+ return element.isDefaultButtonForForm();
case CSSSelector::PseudoDisabled:
- if (element && (element->isFormControlElement() || element->hasTagName(optionTag) || isHTMLOptGroupElement(element)))
- return element->isDisabledFormControl();
+ if (element.isFormControlElement() || element.hasTagName(optionTag) || isHTMLOptGroupElement(element))
+ return element.isDisabledFormControl();
break;
case CSSSelector::PseudoReadOnly:
- return element && element->matchesReadOnlyPseudoClass();
+ return element.matchesReadOnlyPseudoClass();
case CSSSelector::PseudoReadWrite:
- return element && element->matchesReadWritePseudoClass();
+ return element.matchesReadWritePseudoClass();
case CSSSelector::PseudoOptional:
- return element && element->isOptionalFormControl();
+ return element.isOptionalFormControl();
case CSSSelector::PseudoRequired:
- return element && element->isRequiredFormControl();
+ return element.isRequiredFormControl();
case CSSSelector::PseudoValid:
- if (!element)
- return false;
- element->document().setContainsValidityStyleRules();
- return element->willValidate() && element->isValidFormControlElement();
+ element.document().setContainsValidityStyleRules();
+ return element.willValidate() && element.isValidFormControlElement();
case CSSSelector::PseudoInvalid:
- if (!element)
- return false;
- element->document().setContainsValidityStyleRules();
- return element->willValidate() && !element->isValidFormControlElement();
+ element.document().setContainsValidityStyleRules();
+ return element.willValidate() && !element.isValidFormControlElement();
case CSSSelector::PseudoChecked:
{
- if (!element)
- break;
- if (element->hasTagName(inputTag)) {
- HTMLInputElement* inputElement = toHTMLInputElement(element);
+ if (element.hasTagName(inputTag)) {
+ HTMLInputElement& inputElement = toHTMLInputElement(element);
// Even though WinIE allows checked and indeterminate to
// co-exist, the CSS selector spec says that you can't be
// both checked and indeterminate. We will behave like WinIE
// behind the scenes and just obey the CSS spec here in the
// test for matching the pseudo.
- if (inputElement->shouldAppearChecked() && !inputElement->shouldAppearIndeterminate())
+ if (inputElement.shouldAppearChecked() && !inputElement.shouldAppearIndeterminate())
return true;
- } else if (element->hasTagName(optionTag) && toHTMLOptionElement(element)->selected())
+ } else if (element.hasTagName(optionTag) && toHTMLOptionElement(element).selected())
return true;
break;
}
case CSSSelector::PseudoIndeterminate:
- return element && element->shouldAppearIndeterminate();
+ return element.shouldAppearIndeterminate();
case CSSSelector::PseudoRoot:
- if (element == element->document().documentElement())
+ if (element == element.document().documentElement())
return true;
break;
case CSSSelector::PseudoLang:
{
AtomicString value;
- if (element->isWebVTTElement())
- value = toWebVTTElement(element)->language();
+ if (element.isWebVTTElement())
+ value = toWebVTTElement(element).language();
else
- value = element->computeInheritedLanguage();
+ value = element.computeInheritedLanguage();
const AtomicString& argument = selector->argument();
if (value.isEmpty() || !value.startsWith(argument, false))
break;
@@ -751,51 +745,47 @@ bool SelectorChecker::checkOne(const SelectorCheckingContext& context, const Sib
// element is an element in the document, the 'full-screen' pseudoclass applies to
// that element. Also, an <iframe>, <object> or <embed> element whose child browsing
// context's Document is in the fullscreen state has the 'full-screen' pseudoclass applied.
- if (element->isFrameElementBase() && element->containsFullScreenElement())
+ if (element.isFrameElementBase() && element.containsFullScreenElement())
return true;
- if (FullscreenElementStack* fullscreen = FullscreenElementStack::fromIfExists(&element->document())) {
+ if (FullscreenElementStack* fullscreen = FullscreenElementStack::fromIfExists(&element.document())) {
if (!fullscreen->webkitIsFullScreen())
return false;
return element == fullscreen->webkitCurrentFullScreenElement();
}
return false;
case CSSSelector::PseudoFullScreenAncestor:
- return element->containsFullScreenElement();
+ return element.containsFullScreenElement();
case CSSSelector::PseudoFullScreenDocument:
// While a Document is in the fullscreen state, the 'full-screen-document' pseudoclass applies
// to all elements of that Document.
- if (!FullscreenElementStack::isFullScreen(&element->document()))
+ if (!FullscreenElementStack::isFullScreen(&element.document()))
return false;
return true;
case CSSSelector::PseudoSeamlessDocument:
// While a document is rendered in a seamless iframe, the 'seamless-document' pseudoclass applies
// to all elements of that Document.
- return element->document().shouldDisplaySeamlesslyWithParent();
+ return element.document().shouldDisplaySeamlesslyWithParent();
case CSSSelector::PseudoInRange:
- if (!element)
- return false;
- element->document().setContainsValidityStyleRules();
- return element->isInRange();
+ element.document().setContainsValidityStyleRules();
+ return element.isInRange();
case CSSSelector::PseudoOutOfRange:
- if (!element)
- return false;
- element->document().setContainsValidityStyleRules();
- return element->isOutOfRange();
+ element.document().setContainsValidityStyleRules();
+ return element.isOutOfRange();
case CSSSelector::PseudoFutureCue:
- return (element->isWebVTTElement() && !toWebVTTElement(element)->isPastNode());
+ return (element.isWebVTTElement() && !toWebVTTElement(element).isPastNode());
case CSSSelector::PseudoPastCue:
- return (element->isWebVTTElement() && toWebVTTElement(element)->isPastNode());
+ return (element.isWebVTTElement() && toWebVTTElement(element).isPastNode());
case CSSSelector::PseudoScope:
{
- const Node* contextualReferenceNode = !context.scope || (context.behaviorAtBoundary & BoundaryBehaviorMask) == CrossesBoundary ? element->document().documentElement() : context.scope;
+ const Node* contextualReferenceNode = !context.scope || (context.behaviorAtBoundary & BoundaryBehaviorMask) == CrossesBoundary ? element.document().documentElement() : context.scope;
if (element == contextualReferenceNode)
return true;
break;
}
case CSSSelector::PseudoUnresolved:
- if (element->isUnresolvedCustomElement())
+ if (element.isUnresolvedCustomElement())
return true;
break;
@@ -804,7 +794,7 @@ bool SelectorChecker::checkOne(const SelectorCheckingContext& context, const Sib
// :host only matches a shadow host when :host is in a shadow tree of the shadow host.
if (!context.scope || !(context.behaviorAtBoundary & ScopeIsShadowHost) || context.scope != element)
return false;
- ASSERT(element->shadow());
+ ASSERT(element.shadow());
// For empty parameter case, i.e. just :host or :host().
if (!selector->selectorList())
@@ -815,7 +805,7 @@ bool SelectorChecker::checkOne(const SelectorCheckingContext& context, const Sib
subContext.behaviorAtBoundary = CrossesBoundary;
subContext.scope = 0;
// Use NodeRenderingTraversal to traverse a composed ancestor list of a given element.
- for (Element* nextElement = NodeRenderingTraversal::parentElement(element); nextElement; nextElement = NodeRenderingTraversal::parentElement(nextElement)) {
+ for (Element* nextElement = NodeRenderingTraversal::parentElement(&element); nextElement; nextElement = NodeRenderingTraversal::parentElement(nextElement)) {
// If one of simple selectors matches an element, returns SelectorMatches. Just "OR".
for (subContext.selector = selector->selectorList()->first(); subContext.selector; subContext.selector = CSSSelectorList::next(subContext.selector)) {
PseudoId ignoreDynamicPseudo = NOPSEUDO;
@@ -987,16 +977,16 @@ unsigned SelectorChecker::determineLinkMatchType(const CSSSelector* selector)
return linkMatchType;
}
-bool SelectorChecker::isFrameFocused(const Element* element)
+bool SelectorChecker::isFrameFocused(const Element& element)
{
- return element->document().frame() && element->document().frame()->selection().isFocusedAndActive();
+ return element.document().frame() && element.document().frame()->selection().isFocusedAndActive();
}
-bool SelectorChecker::matchesFocusPseudoClass(const Element* element)
+bool SelectorChecker::matchesFocusPseudoClass(const Element& element)
{
- if (InspectorInstrumentation::forcePseudoState(const_cast<Element*>(element), CSSSelector::PseudoFocus))
+ if (InspectorInstrumentation::forcePseudoState(const_cast<Element*>(&element), CSSSelector::PseudoFocus))
return true;
- return element->focused() && isFrameFocused(element);
+ return element.focused() && isFrameFocused(element);
}
template
« no previous file with comments | « Source/core/css/SelectorChecker.h ('k') | Source/core/css/SelectorCheckerFastPath.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698