in src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/parser/JsoupBasedHtmlParser.java [74:146]
public void head(Node node, int depth) {
if (!(node instanceof Element)) {
return;
}
Element tag = (Element) node;
String tagName = tag.tagName().toLowerCase(Locale.ROOT);
if (tagName.equals(TAG_BODY)) {
extractAttribute(tag, ATT_BACKGROUND);
} else if (tagName.equals(TAG_SCRIPT)) {
extractAttribute(tag, ATT_SRC);
} else if (tagName.equals(TAG_BASE)) {
String baseref = tag.attr(ATT_HREF);
try {
if (!StringUtils.isEmpty(baseref))// Bugzilla 30713
{
baseUrl.url = ConversionUtils.makeRelativeURL(baseUrl.url, baseref);
}
} catch (MalformedURLException e1) {
throw new IllegalArgumentException("Error creating relative url from " + baseref, e1);
}
} else if (tagName.equals(TAG_IMAGE)) {
extractAttribute(tag, ATT_SRC);
} else if (tagName.equals(TAG_APPLET)) {
CharSequence codebase = tag.attr(ATT_CODEBASE);
CharSequence archive = tag.attr(ATT_ARCHIVE);
CharSequence code = tag.attr(ATT_CODE);
if (StringUtils.isNotBlank(codebase)) {
String result;
if (StringUtils.isNotBlank(archive)) {
result = codebase.toString() + "/" + archive;
} else {
result = codebase.toString() + "/" + code;
}
urls.addURL(normalizeUrlValue(result), baseUrl.url);
} else {
extractAttribute(tag, ATT_CODE);
}
} else if (tagName.equals(TAG_OBJECT)) {
extractAttribute(tag, ATT_CODEBASE);
extractAttribute(tag, ATT_DATA);
} else if (tagName.equals(TAG_INPUT)) {
// we check the input tag type for image
if (ATT_IS_IMAGE.equalsIgnoreCase(tag.attr(ATT_TYPE))) {
// then we need to download the binary
extractAttribute(tag, ATT_SRC);
}
// Bug 51750
} else if (tagName.equals(TAG_FRAME) || tagName.equals(TAG_IFRAME)) {
extractAttribute(tag, ATT_SRC);
} else if (tagName.equals(TAG_EMBED)) {
extractAttribute(tag, ATT_SRC);
} else if (tagName.equals(TAG_BGSOUND)){
extractAttribute(tag, ATT_SRC);
} else if (tagName.equals(TAG_LINK)) {
String relAttr = tag.attr(ATT_REL);
// Putting the string first means it works even if the attribute is null
if (STYLESHEET.equalsIgnoreCase(relAttr)
|| ICON.equalsIgnoreCase(relAttr)
|| SHORTCUT_ICON.equalsIgnoreCase(relAttr)
|| PRELOAD.equalsIgnoreCase(relAttr)) {
extractAttribute(tag, ATT_HREF);
}
} else {
extractAttribute(tag, ATT_BACKGROUND);
}
// Now look for URLs in the STYLE attribute
String styleTagStr = tag.attr(ATT_STYLE);
if(styleTagStr != null) {
HtmlParsingUtils.extractStyleURLs(baseUrl.url, urls, styleTagStr);
}
}