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

Unified Diff: test/com/dom_distiller/client/FilteringDomVisitorTest.java

Issue 275493007: filter out invisible elements (Closed) Base URL: https://code.google.com/p/dom-distiller/@master
Patch Set: addressed comments Created 6 years, 7 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: test/com/dom_distiller/client/FilteringDomVisitorTest.java
diff --git a/test/com/dom_distiller/client/FilteringDomVisitorTest.java b/test/com/dom_distiller/client/FilteringDomVisitorTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..e48e6ea29b22b6abfe586c95bc6cfd2d4db41d8c
--- /dev/null
+++ b/test/com/dom_distiller/client/FilteringDomVisitorTest.java
@@ -0,0 +1,122 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package com.dom_distiller.client;
+
+import com.google.gwt.junit.client.GWTTestCase;
+
+import com.google.gwt.dom.client.Document;
+import com.google.gwt.dom.client.Element;
+import com.google.gwt.dom.client.NodeList;
+import com.google.gwt.dom.client.StyleElement;
+
+public class FilteringDomVisitorTest extends GWTTestCase {
+ @Override
+ public String getModuleName() {
+ return "com.dom_distiller.DomDistillerJUnit";
+ }
+
+ private void runTest(String innerHtml, String expectedHtml) throws Throwable {
+ Element container = Document.get().createDivElement();
+ container.setInnerHTML(innerHtml);
+ SimpleContentHandler contentHandler = new SimpleContentHandler();
+ DomWalker.Visitor domVisitor = new DomToSaxVisitor(contentHandler);
+ FilteringDomVisitor filteringDomVisitor = new FilteringDomVisitor(domVisitor);
+ new DomWalker(filteringDomVisitor).walk(container);
+ String expectedDocument = "<div>" + expectedHtml + "</div>";
+ assertEquals(expectedDocument, contentHandler.getDocumentString().toLowerCase());
+ }
+
+ public void testVisibleText() throws Throwable {
+ String html = "visible text";
+ runTest(html, html);
+ }
+
+ public void testVisibleElement() throws Throwable {
+ String html = "<div>visible element</div>";
+ runTest(html, html);
+ }
+
+ public void testDisplayNone() throws Throwable {
+ runTest("<div style=\"display:none\">diplay none</div>", "");
+ }
+
+ public void testVisibilityHidden() throws Throwable {
+ runTest("<div style=\"visibility:hidden\">visibility hidden</div>", "");
+ }
+
+ public void testHiddenAttribute() throws Throwable {
+ runTest("<div hidden>hidden attribute</div>", "");
+ }
+
+ public void testInvisibleInVisible() throws Throwable {
+ String html = "<div>visible parent" +
+ "<div style=\"display:none\">invisible child</div>" +
+ "</div>";
+ runTest(html, "<div>visible parent</div>");
+ }
+
+ public void testVisibleInInvisible() throws Throwable {
+ String html = "<div style=\"visibility:hidden\">invisible parent" +
+ "<div>visible child</div>" +
+ "</div>";
+ runTest(html, "");
+ }
+
+ public void testVisibleInVisible() throws Throwable {
+ String html = "<div>visible parent" +
+ "<div>visible child</div>" +
+ "</div>";
+ runTest(html, html);
+ }
+
+ public void testInvisibleInInvisible() throws Throwable {
+ String html = "<div hidden>invisible parent" +
+ "<div style=\"display:none\">invisible child</div>" +
+ "</div>";
+ runTest(html, "");
+ }
+
+ public void testDifferentChildrenInVisible() throws Throwable {
+ String html = "<div>visible parent" +
+ "<div style=\"display:none\">invisible child0</div>" +
+ "<div>visible child1" +
+ "<div hidden>invisible grandchild</div>" +
+ "</div>" +
+ "<div hidden>invisible child2</div>" +
+ "</div>";
+ runTest(html, "<div>visible parent<div>visible child1</div></div>");
+ }
+
+ public void testDifferentChildrenInInvisible() throws Throwable {
+ String html = "<div style=\"visibility:hidden\">invisible parent" +
+ "<div style=\"display:none\">invisible child0</div>" +
+ "<div>visible child1" +
+ "<div hidden>invisible grandchild</div>" +
+ "</div>" +
+ "<div hidden>invisible child2</div>" +
+ "</div>";
+ runTest(html, "");
+ }
+
+ // TODO(kuan): getComputedStyle() doesn't work correctly when running ant test.dev or test.prod,
+ // but it works in production mode in the browser.
+/*
+ public void testComputedDisplayNone() throws Throwable {
+ StyleElement style = Document.get().createStyleElement();
+ style.setInnerHTML("h1 {display:none;}");
+ Document.get().getDocumentElement().getElementsByTagName("HEAD").getItem(0).appendChild(
+ style);
+
+ Element h1 = TestUtil.createHeading(1, "blah");
+ Document.get().getDocumentElement().getElementsByTagName("BODY").getItem(0).appendChild(h1);
+
+ SimpleContentHandler contentHandler = new SimpleContentHandler();
+ DomWalker.Visitor domVisitor = new DomToSaxVisitor(contentHandler);
+ FilteringDomVisitor filteringDomVisitor = new FilteringDomVisitor(domVisitor);
+ new DomWalker(filteringDomVisitor).walk(Document.get().getDocumentElement());
+ assertFalse(contentHandler.getDocumentString().toLowerCase().contains("blah"));
+ }
+*/
+}

Powered by Google App Engine
This is Rietveld 408576698