void HTMLAnchorElement::handleClick(Event* event) { event->setDefaultHandled(); Frame* frame = document()->frame(); if (!frame) return; String url = stripLeadingAndTrailingHTMLSpaces(fastGetAttribute(hrefAttr)); appendServerMapMousePosition(url, event); KURL kurl = document()->completeURL(url); #if ENABLE(DOWNLOAD_ATTRIBUTE) if (hasAttribute(downloadAttr)) { ResourceRequest request(kurl); if (!hasRel(RelationNoReferrer)) { String referrer = SecurityPolicy::generateReferrerHeader(document()->referrerPolicy(), kurl, frame->loader()->outgoingReferrer()); if (!referrer.isEmpty()) request.setHTTPReferrer(referrer); frame->loader()->addExtraFieldsToMainResourceRequest(request); } frame->loader()->client()->startDownload(request, fastGetAttribute(downloadAttr)); } else #endif frame->loader()->urlSelected(kurl, target(), event, false, false, hasRel(RelationNoReferrer) ? NeverSendReferrer : MaybeSendReferrer); sendPings(kurl); }
void HTMLAnchorElement::handleClick(Event* event) { event->setDefaultHandled(); Frame* frame = document().frame(); if (!frame) return; StringBuilder url; url.append(stripLeadingAndTrailingHTMLSpaces(fastGetAttribute(hrefAttr))); appendServerMapMousePosition(url, event); URL kurl = document().completeURL(url.toString()); #if ENABLE(DOWNLOAD_ATTRIBUTE) if (hasAttribute(downloadAttr)) { ResourceRequest request(kurl); // FIXME: Why are we not calling addExtraFieldsToMainResourceRequest() if this check fails? It sets many important header fields. if (!hasRel(RelationNoReferrer)) { String referrer = SecurityPolicy::generateReferrerHeader(document().referrerPolicy(), kurl, frame->loader().outgoingReferrer()); if (!referrer.isEmpty()) request.setHTTPReferrer(referrer); frame->loader().addExtraFieldsToMainResourceRequest(request); } frame->loader().client().startDownload(request, fastGetAttribute(downloadAttr)); } else #endif frame->loader().urlSelected(kurl, target(), event, LockHistory::No, LockBackForwardList::No, hasRel(RelationNoReferrer) ? NeverSendReferrer : MaybeSendReferrer); sendPings(kurl); }