void HTMLAnchorElement::defaultEventHandler(Event* event) { if (isLink()) { if (focused() && isEnterKeyKeydownEvent(event) && treatLinkAsLiveForEventType(NonMouseEvent)) { event->setDefaultHandled(); dispatchSimulatedClick(event); return; } if (isLinkClick(event) && treatLinkAsLiveForEventType(eventType(event))) { handleClick(event); return; } if (rendererIsEditable()) { // This keeps track of the editable block that the selection was in (if it was in one) just before the link was clicked // for the LiveWhenNotFocused editable link behavior if (event->type() == eventNames().mousedownEvent && event->isMouseEvent() && static_cast<MouseEvent*>(event)->button() != RightButton && document()->frame() && document()->frame()->selection()) { setRootEditableElementForSelectionOnMouseDown(document()->frame()->selection()->rootEditableElement()); m_wasShiftKeyDownOnMouseDown = static_cast<MouseEvent*>(event)->shiftKey(); } else if (event->type() == eventNames().mouseoverEvent) { // These are cleared on mouseover and not mouseout because their values are needed for drag events, // but drag events happen after mouse out events. clearRootEditableElementForSelectionOnMouseDown(); m_wasShiftKeyDownOnMouseDown = false; } } } HTMLElement::defaultEventHandler(event); }
void HTMLAnchorElement::defaultEventHandler(Event* event) { if (focused() && isEnterKeyKeydownEvent(event) && isLiveLink()) { event->setDefaultHandled(); dispatchSimulatedClick(event); return; } if (isLinkClick(event) && isLiveLink()) { handleClick(event); return; } }
void SVGAElement::defaultEventHandler(Event* event) { if (isLink()) { if (focused() && isEnterKeyKeydownEvent(event)) { event->setDefaultHandled(); dispatchSimulatedClick(event); return; } if (isLinkClick(event)) { String url = stripLeadingAndTrailingHTMLSpaces(hrefString()); if (url[0] == '#') { Element* targetElement = treeScope().getElementById(AtomicString(url.substring(1))); if (targetElement && isSVGSMILElement(*targetElement)) { toSVGSMILElement(targetElement)->beginByLinkActivation(); event->setDefaultHandled(); return; } // Only allow navigation to internal <view> anchors. if (targetElement && !targetElement->hasTagName(SVGNames::viewTag)) return; } AtomicString target(m_svgTarget->currentValue()->value()); if (target.isEmpty() && fastGetAttribute(XLinkNames::showAttr) == "new") target = AtomicString("_blank", AtomicString::ConstructFromLiteral); event->setDefaultHandled(); Frame* frame = document().frame(); if (!frame) return; FrameLoadRequest frameRequest(&document(), ResourceRequest(document().completeURL(url)), target); frameRequest.setTriggeringEvent(event); frame->loader().load(frameRequest); return; } } SVGGraphicsElement::defaultEventHandler(event); }
void SVGAElement::defaultEventHandler(Event& event) { if (isLink()) { if (focused() && isEnterKeyKeydownEvent(event)) { event.setDefaultHandled(); dispatchSimulatedClick(&event); return; } if (MouseEvent::canTriggerActivationBehavior(event)) { String url = stripLeadingAndTrailingHTMLSpaces(href()); if (url[0] == '#') { Element* targetElement = treeScope().getElementById(url.substringSharingImpl(1)); if (is<SVGSMILElement>(targetElement)) { downcast<SVGSMILElement>(*targetElement).beginByLinkActivation(); event.setDefaultHandled(); return; } // Only allow navigation to internal <view> anchors. if (targetElement && !targetElement->hasTagName(SVGNames::viewTag)) return; } String target = this->target(); if (target.isEmpty() && attributeWithoutSynchronization(XLinkNames::showAttr) == "new") target = "_blank"; event.setDefaultHandled(); Frame* frame = document().frame(); if (!frame) return; if (document().pageCacheState() != Document::NotInPageCache) return; frame->loader().urlSelected(document().completeURL(url), target, &event, LockHistory::No, LockBackForwardList::No, MaybeSendReferrer, document().shouldOpenExternalURLsPolicyToPropagate()); return; } } SVGGraphicsElement::defaultEventHandler(event); }
void SVGAElement::defaultEventHandler(Event* event) { if (isLink()) { if (focused() && isEnterKeyKeydownEvent(event)) { event->setDefaultHandled(); dispatchSimulatedClick(event); return; } if (isLinkClick(event)) { String url = stripLeadingAndTrailingHTMLSpaces(href()); if (url[0] == '#') { Element* targetElement = treeScope().getElementById(url.substringSharingImpl(1)); if (targetElement && isSVGSMILElement(*targetElement)) { toSVGSMILElement(*targetElement).beginByLinkActivation(); event->setDefaultHandled(); return; } // Only allow navigation to internal <view> anchors. if (targetElement && !targetElement->hasTagName(SVGNames::viewTag)) return; } String target = this->target(); if (target.isEmpty() && fastGetAttribute(XLinkNames::showAttr) == "new") target = "_blank"; event->setDefaultHandled(); Frame* frame = document().frame(); if (!frame) return; frame->loader().urlSelected(document().completeURL(url), target, event, LockHistory::No, LockBackForwardList::No, MaybeSendReferrer); return; } } SVGGraphicsElement::defaultEventHandler(event); }