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

Unified Diff: java/org/chromium/distiller/DomUtil.java

Issue 2638823002: Support <picture> in image extraction (Closed)
Patch Set: Created 3 years, 11 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: java/org/chromium/distiller/DomUtil.java
diff --git a/java/org/chromium/distiller/DomUtil.java b/java/org/chromium/distiller/DomUtil.java
index 16766611d7972c1ac1466894f94c7bb74e68f184..e975d33390bf7701d6ecfab7ef2abfe3c1785cc1 100644
--- a/java/org/chromium/distiller/DomUtil.java
+++ b/java/org/chromium/distiller/DomUtil.java
@@ -273,7 +273,8 @@ public class DomUtil {
}
/**
- * Makes all anchors and video posters absolute. This calls "makeAllSrcAttributesAbsolute".
+ * Makes all anchors and video posters absolute. This calls "makeAllSrcAttributesAbsolute"
+ * and "makeAllSrcSetAbsolute".
* @param rootNode The root Node to look through.
*/
public static void makeAllLinksAbsolute(Node rootNode) {
@@ -310,43 +311,54 @@ public class DomUtil {
}
makeAllSrcAttributesAbsolute(root);
- makeSrcSetAbsolute(root);
+ makeAllSrcSetAbsolute(root);
}
- private static void makeSrcSetAbsolute(Element root) {
- if (root.getTagName().equals("IMG")) {
- makeSrcSetAbsolute(ImageElement.as(root));
+ public static void makeAllSrcSetAbsolute(Element root) {
+ if (root.hasAttribute("srcset")) {
+ makeSrcSetAbsolute(root);
}
- NodeList<Element> imgs = DomUtil.querySelectorAll(root, "IMG[SRCSET]");
- for (int i = 0; i < imgs.getLength(); i++) {
- makeSrcSetAbsolute(ImageElement.as(imgs.getItem(i)));
+ NodeList<Element> es = DomUtil.querySelectorAll(root, "[SRCSET]");
+ for (int i = 0; i < es.getLength(); i++) {
+ makeSrcSetAbsolute(es.getItem(i));
}
}
- public static void makeSrcSetAbsolute(ImageElement ie) {
+ private static void makeSrcSetAbsolute(Element ie) {
String srcset = ie.getAttribute("srcset");
if (srcset.isEmpty()) {
ie.removeAttribute("srcset");
return;
}
- String oldsrc = ie.getSrc();
+ ImageElement holder = Document.get().createImageElement();
String[] sizes = StringUtil.jsSplit(srcset, ",");
for(int i = 0; i < sizes.length; i++) {
String size = StringUtil.jsTrim(sizes[i]);
if (size.isEmpty()) continue;
String[] comp = size.split(" ");
- ie.setSrc(comp[0]);
- comp[0] = ie.getSrc();
+ holder.setSrc(comp[0]);
+ comp[0] = holder.getSrc();
sizes[i] = StringUtil.join(comp, " ");
}
ie.setAttribute("srcset", StringUtil.join(sizes, ", "));
- ie.setSrc(oldsrc);
}
- public static List<String> getSrcSetUrls(ImageElement ie) {
+ public static List<String> getAllSrcSetUrls(Element root) {
List<String> list = new ArrayList<>();
- String srcset = ie.getAttribute("srcset");
+ if (root.hasAttribute("srcset")) {
+ list.addAll(getSrcSetUrls(root));
+ }
+ NodeList<Element> es = DomUtil.querySelectorAll(root, "[SRCSET]");
+ for (int i = 0; i < es.getLength(); i++) {
+ list.addAll(getSrcSetUrls(es.getItem(i)));
+ }
+ return list;
+ }
+
+ public static List<String> getSrcSetUrls(Element e) {
+ List<String> list = new ArrayList<>();
+ String srcset = e.getAttribute("srcset");
if (srcset.isEmpty()) {
return list;
}

Powered by Google App Engine
This is Rietveld 408576698