Chromium Code Reviews| 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; |
| } |