OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 package org.chromium.distiller; | 5 package org.chromium.distiller; |
6 | 6 |
| 7 import com.google.gwt.dom.client.AnchorElement; |
7 import com.google.gwt.dom.client.Style; | 8 import com.google.gwt.dom.client.Style; |
| 9 import org.chromium.distiller.webdocument.WebElement; |
8 import org.chromium.distiller.webdocument.WebEmbed; | 10 import org.chromium.distiller.webdocument.WebEmbed; |
| 11 import org.chromium.distiller.webdocument.WebFigure; |
9 import org.chromium.distiller.webdocument.WebImage; | 12 import org.chromium.distiller.webdocument.WebImage; |
10 import org.chromium.distiller.extractors.embeds.EmbedExtractor; | 13 import org.chromium.distiller.extractors.embeds.EmbedExtractor; |
11 import org.chromium.distiller.extractors.embeds.TwitterExtractor; | 14 import org.chromium.distiller.extractors.embeds.TwitterExtractor; |
12 import org.chromium.distiller.extractors.embeds.VimeoExtractor; | 15 import org.chromium.distiller.extractors.embeds.VimeoExtractor; |
13 import org.chromium.distiller.extractors.embeds.YouTubeExtractor; | 16 import org.chromium.distiller.extractors.embeds.YouTubeExtractor; |
14 import org.chromium.distiller.extractors.embeds.ImageExtractor; | 17 import org.chromium.distiller.extractors.embeds.ImageExtractor; |
15 | 18 |
16 import com.google.gwt.dom.client.Document; | 19 import com.google.gwt.dom.client.Document; |
17 import com.google.gwt.dom.client.Element; | 20 import com.google.gwt.dom.client.Element; |
18 import com.google.gwt.dom.client.IFrameElement; | 21 import com.google.gwt.dom.client.IFrameElement; |
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
203 result = (WebEmbed) extractor.extract(nontweet); | 206 result = (WebEmbed) extractor.extract(nontweet); |
204 assertNull(result); | 207 assertNull(result); |
205 } | 208 } |
206 | 209 |
207 public void testRenderedTwitterExtractor() { | 210 public void testRenderedTwitterExtractor() { |
208 IFrameElement twitter = TestUtil.createIframe(); | 211 IFrameElement twitter = TestUtil.createIframe(); |
209 // Add iframe to body so its document is generated. | 212 // Add iframe to body so its document is generated. |
210 mBody.appendChild(twitter); | 213 mBody.appendChild(twitter); |
211 | 214 |
212 // This string represents a very simplified version of the twitter ifram
e embed structure. | 215 // This string represents a very simplified version of the twitter ifram
e embed structure. |
213 String iframeStructure = | 216 String iframeStructure = |
214 "<div class=\"media-forward root standalone-tweet ltr\"" + | 217 "<div class=\"media-forward root standalone-tweet ltr\"" + |
215 "data-iframe-title=\"Embedded Tweet\"" + | 218 "data-iframe-title=\"Embedded Tweet\"" + |
216 "data-scribe=\"page:tweet\">" + | 219 "data-scribe=\"page:tweet\">" + |
217 "<blockquote data-tweet-id=\"1234567890\"" + | 220 "<blockquote data-tweet-id=\"1234567890\"" + |
218 "data-scribe=\"section:subject\">" + | 221 "data-scribe=\"section:subject\">" + |
219 "<div class=\"cards-base cards-multimedia customisable-b
order\"" + | 222 "<div class=\"cards-base cards-multimedia customisable-b
order\"" + |
220 "data-scribe=\"component:card\"" + | 223 "data-scribe=\"component:card\"" + |
221 "data-video-content-id=\"0987654321\">" + | 224 "data-video-content-id=\"0987654321\">" + |
222 "</div>" + | 225 "</div>" + |
223 "<div class=\"header\">" + | 226 "<div class=\"header\">" + |
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
387 mBody.appendChild(image); | 390 mBody.appendChild(image); |
388 | 391 |
389 mHead.setInnerHTML("<base href=\"http://example.com/\">"); | 392 mHead.setInnerHTML("<base href=\"http://example.com/\">"); |
390 | 393 |
391 EmbedExtractor extractor = new ImageExtractor(); | 394 EmbedExtractor extractor = new ImageExtractor(); |
392 WebImage result = (WebImage) extractor.extract(image); | 395 WebImage result = (WebImage) extractor.extract(image); |
393 assertNotNull(result); | 396 assertNotNull(result); |
394 assertEquals("<img src=\"http://example.com/image.png\">", result.genera
teOutput(false)); | 397 assertEquals("<img src=\"http://example.com/image.png\">", result.genera
teOutput(false)); |
395 } | 398 } |
396 | 399 |
| 400 private void extractLazilyLoadedFigure(String attr) { |
| 401 ImageElement image = TestUtil.createImage(); |
| 402 image.setAttribute(attr, "image.png"); |
| 403 Element figure = Document.get().createElement("FIGURE"); |
| 404 figure.appendChild(image); |
| 405 |
| 406 mBody.appendChild(figure); |
| 407 |
| 408 mHead.setInnerHTML("<base href=\"http://example.com/\">"); |
| 409 |
| 410 EmbedExtractor extractor = new ImageExtractor(); |
| 411 WebFigure result = (WebFigure) extractor.extract(figure); |
| 412 assertNotNull(result); |
| 413 assertEquals("<figure><img src=\"http://example.com/image.png\"></figure
>", |
| 414 result.generateOutput(false)); |
| 415 } |
| 416 |
397 public void testImageExtractorLazy() { | 417 public void testImageExtractorLazy() { |
398 extractLazilyLoadedImage("data-src"); | 418 extractLazilyLoadedImage("data-src"); |
399 extractLazilyLoadedImage("datasrc"); | 419 extractLazilyLoadedImage("datasrc"); |
400 extractLazilyLoadedImage("data-original"); | 420 extractLazilyLoadedImage("data-original"); |
401 extractLazilyLoadedImage("data-url"); | 421 extractLazilyLoadedImage("data-url"); |
| 422 |
| 423 extractLazilyLoadedFigure("data-src"); |
| 424 extractLazilyLoadedFigure("datasrc"); |
| 425 extractLazilyLoadedFigure("data-original"); |
| 426 extractLazilyLoadedFigure("data-url"); |
| 427 } |
| 428 |
| 429 public void testFigureWithoutCaption() { |
| 430 ImageElement image = TestUtil.createImage(); |
| 431 image.setSrc("http://wwww.example.com/image.jpeg"); |
| 432 image.setAttribute("width", "100"); |
| 433 image.setAttribute("height", "100"); |
| 434 Element figure = Document.get().createElement("FIGURE"); |
| 435 figure.appendChild(image); |
| 436 mBody.appendChild(figure); |
| 437 |
| 438 EmbedExtractor extractor = new ImageExtractor(); |
| 439 WebImage result = (WebImage) extractor.extract(figure); |
| 440 String got = result.generateOutput(false); |
| 441 String expected = |
| 442 "<figure>" + |
| 443 "<img src=\"http://wwww.example.com/image.jpeg\"" + |
| 444 " width=\"100\" height=\"100\">" + |
| 445 "</figure>"; |
| 446 assertNotNull(result); |
| 447 assertEquals(100, result.getHeight()); |
| 448 assertEquals(100, result.getWidth()); |
| 449 assertEquals(expected, got); |
| 450 } |
| 451 |
| 452 public void testFigureWithoutImageAndCaption() { |
| 453 Element figure = Document.get().createElement("FIGURE"); |
| 454 mBody.appendChild(figure); |
| 455 |
| 456 EmbedExtractor extractor = new ImageExtractor(); |
| 457 WebImage result = (WebImage) extractor.extract(figure); |
| 458 assertNull(result); |
| 459 } |
| 460 |
| 461 public void testFigureCaptionTextOnly() { |
| 462 ImageElement image = TestUtil.createImage(); |
| 463 image.setSrc("http://wwww.example.com/image.jpeg"); |
| 464 image.setAttribute("width", "100"); |
| 465 image.setAttribute("height", "100"); |
| 466 |
| 467 Element figure = Document.get().createElement("FIGURE"); |
| 468 figure.appendChild(image); |
| 469 Element figcaption = Document.get().createElement("FIGCAPTION"); |
| 470 figcaption.setInnerHTML("This is a caption"); |
| 471 figure.appendChild(figcaption); |
| 472 mBody.appendChild(figure); |
| 473 |
| 474 EmbedExtractor extractor = new ImageExtractor(); |
| 475 WebElement result = extractor.extract(figure); |
| 476 assertEquals("This is a caption", result.generateOutput(true)); |
| 477 } |
| 478 |
| 479 public void testFigureCaptionWithAnchor() { |
| 480 mHead.setInnerHTML("<base href=\"http://example.com/\">"); |
| 481 |
| 482 ImageElement image = TestUtil.createImage(); |
| 483 image.setSrc("http://wwww.example.com/image.jpeg"); |
| 484 image.setAttribute("width", "100"); |
| 485 image.setAttribute("height", "100"); |
| 486 |
| 487 Element figure = Document.get().createElement("FIGURE"); |
| 488 figure.appendChild(image); |
| 489 figure.setAttribute("class", "test"); |
| 490 figure.setAttribute("attribute", "value"); |
| 491 |
| 492 Element figcaption = Document.get().createElement("FIGCAPTION"); |
| 493 AnchorElement anchor = Document.get().createAnchorElement(); |
| 494 anchor.setHref("link_page.html"); |
| 495 anchor.setInnerHTML("caption link"); |
| 496 figcaption.appendChild(TestUtil.createText("This is a ")); |
| 497 figcaption.appendChild(anchor); |
| 498 figure.appendChild(figcaption); |
| 499 mBody.appendChild(figure); |
| 500 String expected = |
| 501 "<figure>" + |
| 502 "<img src=\"http://wwww.example.com/image.jpeg\"" + |
| 503 " width=\"100\" height=\"100\">" + |
| 504 "<figcaption>This is a " + |
| 505 "<a href=\"http://example.com/link_page.html\">caption link<
/a>" + |
| 506 "</figcaption>" + |
| 507 "</figure>"; |
| 508 EmbedExtractor extractor = new ImageExtractor(); |
| 509 WebElement result = extractor.extract(figure); |
| 510 assertEquals(expected, TestUtil.removeAllDirAttributes( |
| 511 result.generateOutput(false))); |
| 512 } |
| 513 |
| 514 public void testFigureWithCaptionWithoutAnchor() { |
| 515 ImageElement image = TestUtil.createImage(); |
| 516 image.setSrc("http://wwww.example.com/image.jpeg"); |
| 517 image.setAttribute("width", "100"); |
| 518 image.setAttribute("height", "100"); |
| 519 Element figure = Document.get().createElement("FIGURE"); |
| 520 figure.appendChild(image); |
| 521 Element figcaption = Document.get().createElement("FIGCAPTION"); |
| 522 figcaption.setInnerHTML("<div><span>This is a caption</span></div>"); |
| 523 figure.appendChild(figcaption); |
| 524 mBody.appendChild(figure); |
| 525 |
| 526 EmbedExtractor extractor = new ImageExtractor(); |
| 527 WebImage result = (WebImage) extractor.extract(figure); |
| 528 String expected = |
| 529 "<figure>" + |
| 530 "<img src=\"http://wwww.example.com/image.jpeg\"" + |
| 531 " width=\"100\" height=\"100\">" + |
| 532 "<figcaption>This is a caption</figcaption>" + |
| 533 "</figure>"; |
| 534 assertNotNull(result); |
| 535 assertEquals(100, result.getHeight()); |
| 536 assertEquals(100, result.getWidth()); |
| 537 assertEquals(expected, TestUtil.removeAllDirAttributes( |
| 538 result.generateOutput(false))); |
| 539 } |
| 540 |
| 541 public void testDivCaption() { |
| 542 ImageElement image = TestUtil.createImage(); |
| 543 image.setSrc("http://wwww.example.com/image.jpeg"); |
| 544 image.setAttribute("width", "100"); |
| 545 image.setAttribute("height", "100"); |
| 546 |
| 547 Element figure = Document.get().createElement("FIGURE"); |
| 548 figure.appendChild(image); |
| 549 Element div = Document.get().createElement("DIV"); |
| 550 div.setInnerHTML("This is a caption"); |
| 551 figure.appendChild(div); |
| 552 mBody.appendChild(figure); |
| 553 String expected = |
| 554 "<figure>" + |
| 555 "<img src=\"http://wwww.example.com/image.jpeg\"" + |
| 556 " width=\"100\" height=\"100\">" + |
| 557 "<figcaption>This is a caption</figcaption>" + |
| 558 "</figure>"; |
| 559 EmbedExtractor extractor = new ImageExtractor(); |
| 560 WebElement result = extractor.extract(figure); |
| 561 assertEquals(expected, TestUtil.removeAllDirAttributes( |
| 562 result.generateOutput(false))); |
402 } | 563 } |
403 } | 564 } |
OLD | NEW |