Index: java/org/chromium/distiller/webdocument/DomConverter.java |
diff --git a/java/org/chromium/distiller/webdocument/DomConverter.java b/java/org/chromium/distiller/webdocument/DomConverter.java |
index 31f17a342dd8804bf68a041adb8f54b27698ac7b..5cd462033945abcba7deb8ee5694e56cd662550f 100644 |
--- a/java/org/chromium/distiller/webdocument/DomConverter.java |
+++ b/java/org/chromium/distiller/webdocument/DomConverter.java |
@@ -6,6 +6,7 @@ package org.chromium.distiller.webdocument; |
import org.chromium.distiller.DomUtil; |
import org.chromium.distiller.DomWalker; |
+import org.chromium.distiller.JavaScript; |
import org.chromium.distiller.LogUtil; |
import org.chromium.distiller.TableClassifier; |
@@ -37,11 +38,14 @@ public class DomConverter implements DomWalker.Visitor { |
// For quick lookup of tags that could possibly be embeds. |
private final HashSet<String> embedTagNames; |
+ private boolean isMobileFriendly; |
+ private boolean hasArticleElement; |
+ |
public DomConverter(WebDocumentBuilderInterface builder) { |
- hiddenElements = new HashSet<Node>(); |
+ hiddenElements = new HashSet<>(); |
this.builder = builder; |
- extractors = new ArrayList<EmbedExtractor>(); |
+ extractors = new ArrayList<>(); |
extractors.add(new ImageExtractor()); |
extractors.add(new TwitterExtractor()); |
extractors.add(new VimeoExtractor()); |
@@ -53,6 +57,14 @@ public class DomConverter implements DomWalker.Visitor { |
} |
} |
+ public void setIsMobileFriendly(boolean mobileFriendly) { |
+ isMobileFriendly = mobileFriendly; |
+ } |
+ |
+ public void setHasArticleElement(boolean hasArticle) { |
+ hasArticleElement = hasArticle; |
+ } |
+ |
public final Set<Node> getHiddenElements() { |
return hiddenElements; |
} |
@@ -78,8 +90,17 @@ public class DomConverter implements DomWalker.Visitor { |
private boolean visitElement(Element e) { |
// Skip invisible or uninteresting elements. |
boolean visible = DomUtil.isVisible(e); |
- logVisibilityInfo(e, visible); |
+ boolean keepAnyway = false; |
if (!visible) { |
+ if (isMobileFriendly && hasArticleElement && DomUtil.hasClassName(e, "hidden")) { |
+ // Process more hidden elements in a marked article in mobile-friendly pages |
+ // because some sites hide the lower part of the article. |
+ // See crbug.com/599121 |
+ keepAnyway = true; |
+ } |
+ } |
+ logVisibilityInfo(e, visible || keepAnyway); |
+ if (!visible && !keepAnyway) { |
hiddenElements.add(e); |
return false; |
} |