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

Unified Diff: java/org/chromium/distiller/webdocument/filters/RelevantElements.java

Issue 1230583006: Fix for keeping lists structure (Closed) Base URL: https://github.com/chromium/dom-distiller.git@master
Patch Set: Using a new approach to keep list structure. Created 5 years, 5 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/webdocument/filters/RelevantElements.java
diff --git a/java/org/chromium/distiller/webdocument/filters/RelevantElements.java b/java/org/chromium/distiller/webdocument/filters/RelevantElements.java
index 02ec74670b5dd6b98dd3767d0e40540326e41c48..ec4a2665037b708d4defadabe6511a48fa58c393 100644
--- a/java/org/chromium/distiller/webdocument/filters/RelevantElements.java
+++ b/java/org/chromium/distiller/webdocument/filters/RelevantElements.java
@@ -7,6 +7,10 @@ package org.chromium.distiller.webdocument.filters;
import org.chromium.distiller.webdocument.WebDocument;
import org.chromium.distiller.webdocument.WebElement;
import org.chromium.distiller.webdocument.WebText;
+import org.chromium.distiller.webdocument.PlaceHolderStart;
+import org.chromium.distiller.webdocument.PlaceHolderEnd;
+import java.util.List;
+import java.util.Stack;
public class RelevantElements {
public static boolean process(WebDocument document) {
@@ -25,6 +29,42 @@ public class RelevantElements {
}
}
}
+ handlePlaceHolderElements(document.getElements());
return changes;
}
+
+ public static void handlePlaceHolderElements(List<WebElement> elements) {
+ class PlaceHolder {
+ public PlaceHolder(WebElement start, boolean flush) {
mdjones 2015/07/29 17:12:16 What if there were only one class for a placeholde
+ this.start = start;
+ this.flush = flush;
+ }
+
+ WebElement start;
+ boolean flush;
+ }
+ boolean flush = false;
+ int stackMark = -1;
mdjones 2015/07/29 17:12:16 I don't understand what this var is for. The only
+ Stack<PlaceHolder> holderStack = new Stack<>();
+
+ for (WebElement e : elements) {
+ if (e instanceof WebText) {
+ if (!flush) {
+ flush = e.getIsContent();
+ }
+ } else if (e instanceof PlaceHolderStart) {
+ holderStack.push(new PlaceHolder(e, flush));
+ flush = false;
+ } else if (e instanceof PlaceHolderEnd) {
+ PlaceHolder placeHolder = holderStack.pop();
+ boolean isContent;
mdjones 2015/07/29 21:00:24 Set isContent to flush here instead, or just use f
+ if ((isContent = flush || stackMark >= holderStack.size())) {
+ stackMark = holderStack.size() - 1;
+ }
+ placeHolder.start.setIsContent(isContent);
+ e.setIsContent(isContent);
+ flush = placeHolder.flush;
+ }
+ }
+ }
}

Powered by Google App Engine
This is Rietveld 408576698