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..ce5660bec82cecf689362ee66eff5d9a0e7ff8aa 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 Element articleElement; |
+ |
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 setArticleElement(Element article) { |
+ articleElement = article; |
+ } |
+ |
public final Set<Node> getHiddenElements() { |
return hiddenElements; |
} |
@@ -78,8 +90,18 @@ 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 && articleElement != null && JavaScript.contains(articleElement, e) |
+ && DomUtil.hasClassName(e, "hidden")) { |
mdjones
2016/08/24 22:45:51
Do you think it is possible/worth while to isolate
|
+ // 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; |
} |