Index: javatests/org/chromium/distiller/EmbedExtractorTest.java |
diff --git a/javatests/org/chromium/distiller/EmbedExtractorTest.java b/javatests/org/chromium/distiller/EmbedExtractorTest.java |
index 2b7a2f886cb30bff60a738b98bd8f9f571c9d97c..7fd027743b09a33feede635e2254ca601b48e2ad 100644 |
--- a/javatests/org/chromium/distiller/EmbedExtractorTest.java |
+++ b/javatests/org/chromium/distiller/EmbedExtractorTest.java |
@@ -4,8 +4,11 @@ |
package org.chromium.distiller; |
+import com.google.gwt.dom.client.AnchorElement; |
import com.google.gwt.dom.client.Style; |
+import org.chromium.distiller.webdocument.WebElement; |
import org.chromium.distiller.webdocument.WebEmbed; |
+import org.chromium.distiller.webdocument.WebFigure; |
import org.chromium.distiller.webdocument.WebImage; |
import org.chromium.distiller.extractors.embeds.EmbedExtractor; |
import org.chromium.distiller.extractors.embeds.TwitterExtractor; |
@@ -210,7 +213,7 @@ public class EmbedExtractorTest extends DomDistillerJsTestCase { |
mBody.appendChild(twitter); |
// This string represents a very simplified version of the twitter iframe embed structure. |
- String iframeStructure = |
+ String iframeStructure = |
"<div class=\"media-forward root standalone-tweet ltr\"" + |
"data-iframe-title=\"Embedded Tweet\"" + |
"data-scribe=\"page:tweet\">" + |
@@ -394,10 +397,168 @@ public class EmbedExtractorTest extends DomDistillerJsTestCase { |
assertEquals("<img src=\"http://example.com/image.png\">", result.generateOutput(false)); |
} |
+ private void extractLazilyLoadedFigure(String attr) { |
+ ImageElement image = TestUtil.createImage(); |
+ image.setAttribute(attr, "image.png"); |
+ Element figure = Document.get().createElement("FIGURE"); |
+ figure.appendChild(image); |
+ |
+ mBody.appendChild(figure); |
+ |
+ mHead.setInnerHTML("<base href=\"http://example.com/\">"); |
+ |
+ EmbedExtractor extractor = new ImageExtractor(); |
+ WebFigure result = (WebFigure) extractor.extract(figure); |
+ assertNotNull(result); |
+ assertEquals("<figure><img src=\"http://example.com/image.png\"></figure>", |
+ result.generateOutput(false)); |
+ } |
+ |
public void testImageExtractorLazy() { |
extractLazilyLoadedImage("data-src"); |
extractLazilyLoadedImage("datasrc"); |
extractLazilyLoadedImage("data-original"); |
extractLazilyLoadedImage("data-url"); |
+ |
+ extractLazilyLoadedFigure("data-src"); |
+ extractLazilyLoadedFigure("datasrc"); |
+ extractLazilyLoadedFigure("data-original"); |
+ extractLazilyLoadedFigure("data-url"); |
+ } |
+ |
+ public void testFigureWithoutCaption() { |
+ ImageElement image = TestUtil.createImage(); |
+ image.setSrc("http://wwww.example.com/image.jpeg"); |
+ image.setAttribute("width", "100"); |
+ image.setAttribute("height", "100"); |
+ Element figure = Document.get().createElement("FIGURE"); |
+ figure.appendChild(image); |
+ mBody.appendChild(figure); |
+ |
+ EmbedExtractor extractor = new ImageExtractor(); |
+ WebImage result = (WebImage) extractor.extract(figure); |
+ String got = result.generateOutput(false); |
+ String expected = |
+ "<figure>" + |
+ "<img src=\"http://wwww.example.com/image.jpeg\"" + |
+ " width=\"100\" height=\"100\">" + |
+ "</figure>"; |
+ assertNotNull(result); |
+ assertEquals(100, result.getHeight()); |
+ assertEquals(100, result.getWidth()); |
+ assertEquals(expected, got); |
+ } |
+ |
+ public void testFigureWithoutImageAndCaption() { |
+ Element figure = Document.get().createElement("FIGURE"); |
+ mBody.appendChild(figure); |
+ |
+ EmbedExtractor extractor = new ImageExtractor(); |
+ WebImage result = (WebImage) extractor.extract(figure); |
+ assertNull(result); |
+ } |
+ |
+ public void testFigureCaptionTextOnly() { |
+ ImageElement image = TestUtil.createImage(); |
+ image.setSrc("http://wwww.example.com/image.jpeg"); |
+ image.setAttribute("width", "100"); |
+ image.setAttribute("height", "100"); |
+ |
+ Element figure = Document.get().createElement("FIGURE"); |
+ figure.appendChild(image); |
+ Element figcaption = Document.get().createElement("FIGCAPTION"); |
+ figcaption.setInnerHTML("This is a caption"); |
+ figure.appendChild(figcaption); |
+ mBody.appendChild(figure); |
+ |
+ EmbedExtractor extractor = new ImageExtractor(); |
+ WebElement result = extractor.extract(figure); |
+ assertEquals("This is a caption", result.generateOutput(true)); |
+ } |
+ |
+ public void testFigureCaptionWithAnchor() { |
+ mHead.setInnerHTML("<base href=\"http://example.com/\">"); |
+ |
+ ImageElement image = TestUtil.createImage(); |
+ image.setSrc("http://wwww.example.com/image.jpeg"); |
+ image.setAttribute("width", "100"); |
+ image.setAttribute("height", "100"); |
+ |
+ Element figure = Document.get().createElement("FIGURE"); |
+ figure.appendChild(image); |
+ figure.setAttribute("class", "test"); |
+ figure.setAttribute("attribute", "value"); |
+ |
+ Element figcaption = Document.get().createElement("FIGCAPTION"); |
+ AnchorElement anchor = Document.get().createAnchorElement(); |
+ anchor.setHref("link_page.html"); |
+ anchor.setInnerHTML("caption link"); |
+ figcaption.appendChild(TestUtil.createText("This is a ")); |
+ figcaption.appendChild(anchor); |
+ figure.appendChild(figcaption); |
+ mBody.appendChild(figure); |
+ String expected = |
+ "<figure>" + |
+ "<img src=\"http://wwww.example.com/image.jpeg\"" + |
+ " width=\"100\" height=\"100\">" + |
+ "<figcaption>This is a " + |
+ "<a href=\"http://example.com/link_page.html\">caption link</a>" + |
+ "</figcaption>" + |
+ "</figure>"; |
+ EmbedExtractor extractor = new ImageExtractor(); |
+ WebElement result = extractor.extract(figure); |
+ assertEquals(expected, TestUtil.removeAllDirAttributes( |
+ result.generateOutput(false))); |
+ } |
+ |
+ public void testFigureWithCaptionWithoutAnchor() { |
+ ImageElement image = TestUtil.createImage(); |
+ image.setSrc("http://wwww.example.com/image.jpeg"); |
+ image.setAttribute("width", "100"); |
+ image.setAttribute("height", "100"); |
+ Element figure = Document.get().createElement("FIGURE"); |
+ figure.appendChild(image); |
+ Element figcaption = Document.get().createElement("FIGCAPTION"); |
+ figcaption.setInnerHTML("<div><span>This is a caption</span></div>"); |
+ figure.appendChild(figcaption); |
+ mBody.appendChild(figure); |
+ |
+ EmbedExtractor extractor = new ImageExtractor(); |
+ WebImage result = (WebImage) extractor.extract(figure); |
+ String expected = |
+ "<figure>" + |
+ "<img src=\"http://wwww.example.com/image.jpeg\"" + |
+ " width=\"100\" height=\"100\">" + |
+ "<figcaption>This is a caption</figcaption>" + |
+ "</figure>"; |
+ assertNotNull(result); |
+ assertEquals(100, result.getHeight()); |
+ assertEquals(100, result.getWidth()); |
+ assertEquals(expected, TestUtil.removeAllDirAttributes( |
+ result.generateOutput(false))); |
+ } |
+ |
+ public void testDivCaption() { |
+ ImageElement image = TestUtil.createImage(); |
+ image.setSrc("http://wwww.example.com/image.jpeg"); |
+ image.setAttribute("width", "100"); |
+ image.setAttribute("height", "100"); |
+ |
+ Element figure = Document.get().createElement("FIGURE"); |
+ figure.appendChild(image); |
+ Element div = Document.get().createElement("DIV"); |
+ div.setInnerHTML("This is a caption"); |
+ figure.appendChild(div); |
+ mBody.appendChild(figure); |
+ String expected = |
+ "<figure>" + |
+ "<img src=\"http://wwww.example.com/image.jpeg\"" + |
+ " width=\"100\" height=\"100\">" + |
+ "<figcaption>This is a caption</figcaption>" + |
+ "</figure>"; |
+ EmbedExtractor extractor = new ImageExtractor(); |
+ WebElement result = extractor.extract(figure); |
+ assertEquals(expected, TestUtil.removeAllDirAttributes( |
+ result.generateOutput(false))); |
} |
} |