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

Unified Diff: Source/core/html/HTMLAnchorElement.cpp

Issue 1235603003: Use DOMSettableTokenList for {HTMLAnchorElement, HTMLAreaElement}.ping. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 years, 5 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
Index: Source/core/html/HTMLAnchorElement.cpp
diff --git a/Source/core/html/HTMLAnchorElement.cpp b/Source/core/html/HTMLAnchorElement.cpp
index 0e49c829ee7e3e136e827760e1bceabc25431131..ccecf53e8328e4051063442ba15f3ba9b5f969fc 100644
--- a/Source/core/html/HTMLAnchorElement.cpp
+++ b/Source/core/html/HTMLAnchorElement.cpp
@@ -47,9 +47,17 @@ HTMLAnchorElement::HTMLAnchorElement(const QualifiedName& tagName, Document& doc
, m_linkRelations(0)
, m_cachedVisitedLinkHash(0)
, m_wasFocusedByMouse(false)
+ , m_ping(DOMSettableTokenList::create(this))
{
}
+DEFINE_TRACE(HTMLAnchorElement)
+{
+ visitor->trace(m_ping);
+ HTMLElement::trace(visitor);
+ DOMSettableTokenListObserver::trace(visitor);
+}
+
PassRefPtrWillBeRawPtr<HTMLAnchorElement> HTMLAnchorElement::create(Document& document)
{
return adoptRefWillBeNoop(new HTMLAnchorElement(aTag, document));
@@ -57,6 +65,7 @@ PassRefPtrWillBeRawPtr<HTMLAnchorElement> HTMLAnchorElement::create(Document& do
HTMLAnchorElement::~HTMLAnchorElement()
{
+ m_ping->setObserver(nullptr);
}
bool HTMLAnchorElement::supportsFocus() const
@@ -217,6 +226,8 @@ void HTMLAnchorElement::parseAttribute(const QualifiedName& name, const AtomicSt
// Do nothing.
} else if (name == relAttr) {
setRel(value);
+ } else if (name == pingAttr) {
+ m_ping->setValue(value);
} else {
HTMLElement::parseAttribute(name, value);
}
@@ -317,17 +328,21 @@ bool HTMLAnchorElement::isLiveLink() const
void HTMLAnchorElement::sendPings(const KURL& destinationURL) const
{
- const AtomicString& pingValue = getAttribute(pingAttr);
- if (pingValue.isNull() || !document().settings() || !document().settings()->hyperlinkAuditingEnabled())
+ if (m_ping->value().isNull() || !document().settings() || !document().settings()->hyperlinkAuditingEnabled())
return;
UseCounter::count(document(), UseCounter::HTMLAnchorElementPingAttribute);
- SpaceSplitString pingURLs(pingValue, SpaceSplitString::ShouldNotFoldCase);
+ SpaceSplitString pingURLs = m_ping->tokens();
for (unsigned i = 0; i < pingURLs.size(); i++)
PingLoader::sendLinkAuditPing(document().frame(), document().completeURL(pingURLs[i]), destinationURL);
}
+DOMSettableTokenList* HTMLAnchorElement::ping() const
+{
+ return m_ping.get();
+}
+
void HTMLAnchorElement::handleClick(Event* event)
{
event->setDefaultHandled();
@@ -398,4 +413,9 @@ Node::InsertionNotificationRequest HTMLAnchorElement::insertedInto(ContainerNode
return HTMLElement::insertedInto(insertionPoint);
}
+void HTMLAnchorElement::valueChanged()
+{
+ setSynchronizedLazyAttribute(pingAttr, m_ping->value());
+}
+
} // namespace blink

Powered by Google App Engine
This is Rietveld 408576698