| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
| 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
| 4 * (C) 2000 Simon Hausmann <hausmann@kde.org> | 4 * (C) 2000 Simon Hausmann <hausmann@kde.org> |
| 5 * Copyright (C) 2003, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights | 5 * Copyright (C) 2003, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights |
| 6 * reserved. | 6 * reserved. |
| 7 * (C) 2006 Graham Dennis (graham.dennis@gmail.com) | 7 * (C) 2006 Graham Dennis (graham.dennis@gmail.com) |
| 8 * | 8 * |
| 9 * This library is free software; you can redistribute it and/or | 9 * This library is free software; you can redistribute it and/or |
| 10 * modify it under the terms of the GNU Library General Public | 10 * modify it under the terms of the GNU Library General Public |
| (...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 244 HTMLElement::defaultEventHandler(event); | 244 HTMLElement::defaultEventHandler(event); |
| 245 } | 245 } |
| 246 | 246 |
| 247 void HTMLAnchorElement::setActive(bool down) { | 247 void HTMLAnchorElement::setActive(bool down) { |
| 248 if (hasEditableStyle(*this)) | 248 if (hasEditableStyle(*this)) |
| 249 return; | 249 return; |
| 250 | 250 |
| 251 ContainerNode::setActive(down); | 251 ContainerNode::setActive(down); |
| 252 } | 252 } |
| 253 | 253 |
| 254 void HTMLAnchorElement::attributeChanged(const QualifiedName& name, | 254 void HTMLAnchorElement::attributeChanged( |
| 255 const AtomicString& oldValue, | 255 const AttributeModificationParams& params) { |
| 256 const AtomicString& newValue, | 256 HTMLElement::attributeChanged(params); |
| 257 AttributeModificationReason reason) { | 257 if (params.reason != AttributeModificationReason::kDirectly) |
| 258 HTMLElement::attributeChanged(name, oldValue, newValue, reason); | |
| 259 if (reason != AttributeModificationReason::kDirectly) | |
| 260 return; | 258 return; |
| 261 if (name != hrefAttr && isLink()) | 259 if (params.name != hrefAttr && isLink()) |
| 262 return; | 260 return; |
| 263 if (adjustedFocusedElementInTreeScope() != this) | 261 if (adjustedFocusedElementInTreeScope() != this) |
| 264 return; | 262 return; |
| 265 blur(); | 263 blur(); |
| 266 } | 264 } |
| 267 | 265 |
| 268 void HTMLAnchorElement::parseAttribute(const QualifiedName& name, | 266 void HTMLAnchorElement::parseAttribute( |
| 269 const AtomicString& oldValue, | 267 const AttributeModificationParams& params) { |
| 270 const AtomicString& value) { | 268 if (params.name == hrefAttr) { |
| 271 if (name == hrefAttr) { | |
| 272 bool wasLink = isLink(); | 269 bool wasLink = isLink(); |
| 273 setIsLink(!value.isNull()); | 270 setIsLink(!params.newValue.isNull()); |
| 274 if (wasLink || isLink()) { | 271 if (wasLink || isLink()) { |
| 275 pseudoStateChanged(CSSSelector::PseudoLink); | 272 pseudoStateChanged(CSSSelector::PseudoLink); |
| 276 pseudoStateChanged(CSSSelector::PseudoVisited); | 273 pseudoStateChanged(CSSSelector::PseudoVisited); |
| 277 pseudoStateChanged(CSSSelector::PseudoAnyLink); | 274 pseudoStateChanged(CSSSelector::PseudoAnyLink); |
| 278 } | 275 } |
| 279 if (isLink()) { | 276 if (isLink()) { |
| 280 String parsedURL = stripLeadingAndTrailingHTMLSpaces(value); | 277 String parsedURL = stripLeadingAndTrailingHTMLSpaces(params.newValue); |
| 281 if (document().isDNSPrefetchEnabled()) { | 278 if (document().isDNSPrefetchEnabled()) { |
| 282 if (protocolIs(parsedURL, "http") || protocolIs(parsedURL, "https") || | 279 if (protocolIs(parsedURL, "http") || protocolIs(parsedURL, "https") || |
| 283 parsedURL.startsWith("//")) | 280 parsedURL.startsWith("//")) |
| 284 prefetchDNS(document().completeURL(parsedURL).host()); | 281 prefetchDNS(document().completeURL(parsedURL).host()); |
| 285 } | 282 } |
| 286 } | 283 } |
| 287 invalidateCachedVisitedLinkHash(); | 284 invalidateCachedVisitedLinkHash(); |
| 288 logUpdateAttributeIfIsolatedWorldAndInDocument("a", hrefAttr, oldValue, | 285 logUpdateAttributeIfIsolatedWorldAndInDocument("a", params); |
| 289 value); | 286 } else if (params.name == nameAttr || params.name == titleAttr) { |
| 290 } else if (name == nameAttr || name == titleAttr) { | |
| 291 // Do nothing. | 287 // Do nothing. |
| 292 } else if (name == relAttr) { | 288 } else if (params.name == relAttr) { |
| 293 setRel(value); | 289 setRel(params.newValue); |
| 294 } else { | 290 } else { |
| 295 HTMLElement::parseAttribute(name, oldValue, value); | 291 HTMLElement::parseAttribute(params); |
| 296 } | 292 } |
| 297 } | 293 } |
| 298 | 294 |
| 299 void HTMLAnchorElement::accessKeyAction(bool sendMouseEvents) { | 295 void HTMLAnchorElement::accessKeyAction(bool sendMouseEvents) { |
| 300 dispatchSimulatedClick( | 296 dispatchSimulatedClick( |
| 301 0, sendMouseEvents ? SendMouseUpDownEvents : SendNoEvents); | 297 0, sendMouseEvents ? SendMouseUpDownEvents : SendNoEvents); |
| 302 } | 298 } |
| 303 | 299 |
| 304 bool HTMLAnchorElement::isURLAttribute(const Attribute& attribute) const { | 300 bool HTMLAnchorElement::isURLAttribute(const Attribute& attribute) const { |
| 305 return attribute.name().localName() == hrefAttr || | 301 return attribute.name().localName() == hrefAttr || |
| (...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 485 } | 481 } |
| 486 | 482 |
| 487 HTMLAnchorElement::NavigationHintSender* | 483 HTMLAnchorElement::NavigationHintSender* |
| 488 HTMLAnchorElement::ensureNavigationHintSender() { | 484 HTMLAnchorElement::ensureNavigationHintSender() { |
| 489 if (!m_navigationHintSender) | 485 if (!m_navigationHintSender) |
| 490 m_navigationHintSender = NavigationHintSender::create(this); | 486 m_navigationHintSender = NavigationHintSender::create(this); |
| 491 return m_navigationHintSender; | 487 return m_navigationHintSender; |
| 492 } | 488 } |
| 493 | 489 |
| 494 } // namespace blink | 490 } // namespace blink |
| OLD | NEW |