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

Side by Side Diff: javatests/org/chromium/distiller/DomUtilTest.java

Issue 1411603004: Discard hidden articles when using fast path (Closed) Base URL: https://github.com/chromium/dom-distiller.git@master
Patch Set: nit fixed 4 Created 4 years, 6 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 unified diff | Download patch
OLDNEW
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 org.chromium.distiller.webdocument.WebTable; 7 import org.chromium.distiller.webdocument.WebTable;
8 8
9 import com.google.gwt.core.client.JsArray; 9 import com.google.gwt.core.client.JsArray;
10 import com.google.gwt.dom.client.Document; 10 import com.google.gwt.dom.client.Document;
11 import com.google.gwt.dom.client.Element; 11 import com.google.gwt.dom.client.Element;
12 import com.google.gwt.dom.client.Node; 12 import com.google.gwt.dom.client.Node;
13 import com.google.gwt.dom.client.NodeList;
13 14
14 import java.util.Map; 15 import java.util.Map;
15 import java.util.List; 16 import java.util.List;
16 17
17 public class DomUtilTest extends DomDistillerJsTestCase { 18 public class DomUtilTest extends DomDistillerJsTestCase {
18 public void testGetAttributes() { 19 public void testGetAttributes() {
19 Element e = Document.get().createDivElement(); 20 Element e = Document.get().createDivElement();
20 e.setInnerHTML("<div style=\"width:50px; height:100px\" id=\"f\" class=\ "sdf\"></div>"); 21 e.setInnerHTML("<div style=\"width:50px; height:100px\" id=\"f\" class=\ "sdf\"></div>");
21 e = Element.as(e.getChildNodes().getItem(0)); 22 e = Element.as(e.getChildNodes().getItem(0));
22 JsArray<Node> jsAttrs = DomUtil.getAttributes(e); 23 JsArray<Node> jsAttrs = DomUtil.getAttributes(e);
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 104
104 Element currDiv = TestUtil.createDiv(3); 105 Element currDiv = TestUtil.createDiv(3);
105 div2.appendChild(currDiv); 106 div2.appendChild(currDiv);
106 Element finalDiv1 = currDiv; 107 Element finalDiv1 = currDiv;
107 108
108 currDiv = TestUtil.createDiv(4); 109 currDiv = TestUtil.createDiv(4);
109 div2.appendChild(currDiv); 110 div2.appendChild(currDiv);
110 currDiv.appendChild(TestUtil.createDiv(5)); 111 currDiv.appendChild(TestUtil.createDiv(5));
111 112
112 assertEquals(div2, DomUtil.getNearestCommonAncestor(finalDiv1, currDiv.g etChild(0))); 113 assertEquals(div2, DomUtil.getNearestCommonAncestor(finalDiv1, currDiv.g etChild(0)));
113 assertEquals(div2, DomUtil.getNearestCommonAncestor( 114 NodeList<Element> nodeList = DomUtil.querySelectorAll(mRoot, "[id=\"3\"] ,[id=\"5\"]");
114 DomUtil.querySelectorAll(mRoot, "[id=\"3\"],[id=\"5\"]"))); 115 assertEquals(div2, DomUtil.getNearestCommonAncestor(TestUtil.nodeListToL ist(nodeList)));
115 } 116 }
116 117
117 /** 118 /**
118 * The tree graph is: 119 * The tree graph is:
119 * 1 - 2 - 3 120 * 1 - 2 - 3
120 */ 121 */
121 public void testNearestCommonAncestorIsRoot() { 122 public void testNearestCommonAncestorIsRoot() {
122 Element div = TestUtil.createDiv(1); 123 Element div = TestUtil.createDiv(1);
123 mBody.appendChild(div); 124 mBody.appendChild(div);
124 125
125 Element div2 = TestUtil.createDiv(2); 126 Element div2 = TestUtil.createDiv(2);
126 div.appendChild(div2); 127 div.appendChild(div2);
127 128
128 Element div3 = TestUtil.createDiv(3); 129 Element div3 = TestUtil.createDiv(3);
129 div2.appendChild(div3); 130 div2.appendChild(div3);
130 131
131 assertEquals(div, DomUtil.getNearestCommonAncestor(div, div3)); 132 assertEquals(div, DomUtil.getNearestCommonAncestor(div, div3));
132 assertEquals(div, DomUtil.getNearestCommonAncestor( 133 NodeList<Element> nodeList = DomUtil.querySelectorAll(mRoot, "[id=\"1\"] ,[id=\"3\"]");
133 DomUtil.querySelectorAll(mRoot, "[id=\"1\"],[id=\"3\"]"))); 134 assertEquals(div, DomUtil.getNearestCommonAncestor(TestUtil.nodeListToLi st(nodeList)));
134 } 135 }
135 136
136 public void testNodeDepth() { 137 public void testNodeDepth() {
137 Element div = TestUtil.createDiv(1); 138 Element div = TestUtil.createDiv(1);
138 139
139 Element div2 = TestUtil.createDiv(2); 140 Element div2 = TestUtil.createDiv(2);
140 div.appendChild(div2); 141 div.appendChild(div2);
141 142
142 Element div3 = TestUtil.createDiv(3); 143 Element div3 = TestUtil.createDiv(3);
143 div2.appendChild(div3); 144 div2.appendChild(div3);
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after
371 for (int i = 0; i < mBody.getChildCount(); i++) { 372 for (int i = 0; i < mBody.getChildCount(); i++) {
372 DomUtil.stripImageElements(mBody.getChild(i)); 373 DomUtil.stripImageElements(mBody.getChild(i));
373 } 374 }
374 assertEquals(expected, mBody.getInnerHTML()); 375 assertEquals(expected, mBody.getInnerHTML());
375 376
376 mBody.setInnerHTML(html); 377 mBody.setInnerHTML(html);
377 DomUtil.stripImageElements(mBody); 378 DomUtil.stripImageElements(mBody);
378 assertEquals(expected, mBody.getInnerHTML()); 379 assertEquals(expected, mBody.getInnerHTML());
379 } 380 }
380 381
382 public void testIsVisibleByOffsetParentDisplayNone() {
383 String html =
384 "<div style=\"display: none;\">" +
385 "<div></div>" +
386 "</div>";
387 mBody.setInnerHTML(html);
388 Element child = mBody.getFirstChildElement().getFirstChildElement();
389 assertFalse(DomUtil.isVisibleByOffset(child));
390 }
391
392 public void testIsVisibleByOffsetChildDisplayNone() {
393 String html =
394 "<div>" +
395 "<div style=\"display: none;\"></div>" +
396 "</div>";
397 mBody.setInnerHTML(html);
398 Element child = mBody.getFirstChildElement().getFirstChildElement();
399 assertFalse(DomUtil.isVisibleByOffset(child));
400 }
401
402 public void testIsVisibleByOffsetDisplayBlock() {
403 String html =
404 "<div>" +
405 "<div></div>" +
406 "</div>";
407 mBody.setInnerHTML(html);
408 Element child = mBody.getFirstChildElement().getFirstChildElement();
409 assertTrue(DomUtil.isVisibleByOffset(child));
410 }
411
412 public void testOnlyProcessArticleElement() {
413 final String htmlArticle =
414 "<h1></h1>" +
415 "<article></article>";
416
417 String expected = "<article></article>";
418
419 Element result = getArticleElement(htmlArticle);
420 assertEquals(expected, result.getString());
421 }
422
423 public void testOnlyProcessArticleElementWithHiddenArticleElement() {
424 final String htmlArticle =
425 "<h1></h1>" +
426 "<article></article>" +
427 "<article style=\"display:none\"></article>";
428
429 String expected = "<article></article>";
430
431 Element result = getArticleElement(htmlArticle);
432 assertEquals(expected, result.getString());
433 }
434
435 public void testOnlyProcessArticleElementMultiple() {
436 final String htmlArticle =
437 "<h1></h1>" +
438 "<article></article>" +
439 "<article></article>";
440
441 // The existence of multiple articles disables the fast path.
442 assertNull(getArticleElement(htmlArticle));
443 }
444
445 public void testOnlyProcessSchemaOrgArticle() {
446 final String htmlArticle =
447 "<h1></h1>" +
448 "<div itemscope itemtype=\"http://schema.org/Article\">" +
449 "</div>";
450
451 final String expected =
452 "<div itemscope=\"\" " +
453 "itemtype=\"http://schema.org/Article\">" +
454 "</div>";
455
456 Element result = getArticleElement(htmlArticle);
457 assertEquals(expected, result.getString());
458 }
459
460 public void testOnlyProcessSchemaOrgArticleWithHiddenArticleElement() {
461 final String htmlArticle =
462 "<h1></h1>" +
463 "<div itemscope itemtype=\"http://schema.org/Article\">" +
464 "</div>" +
465 "<div itemscope itemtype=\"http://schema.org/Article\" " +
466 "style=\"display:none\">" +
467 "</div>";
468
469 String expected =
470 "<div itemscope=\"\" itemtype=\"http://schema.org/Article\">" +
471 "</div>";
472
473 Element result = getArticleElement(htmlArticle);
474 assertEquals(expected, result.getString());
475 }
476
477 public void testOnlyProcessSchemaOrgArticleNews() {
478 final String htmlArticle =
479 "<h1></h1>" +
480 "<div itemscope itemtype=\"http://schema.org/NewsArticle\">" +
481 "</div>";
482
483 final String expected =
484 "<div itemscope=\"\" " +
485 "itemtype=\"http://schema.org/NewsArticle\">" +
486 "</div>";
487
488 Element result = getArticleElement(htmlArticle);
489 assertEquals(expected, result.getString());
490 }
491
492 public void testOnlyProcessSchemaOrgArticleBlog() {
493 final String htmlArticle =
494 "<h1></h1>" +
495 "<div itemscope itemtype=\"http://schema.org/BlogPosting\">" +
496 "</div>";
497
498 final String expected =
499 "<div itemscope=\"\" " +
500 "itemtype=\"http://schema.org/BlogPosting\">" +
501 "</div>";
502
503 Element result = getArticleElement(htmlArticle);
504 assertEquals(expected, result.getString());
505 }
506
507 public void testOnlyProcessSchemaOrgArticleNested() {
508 final String htmlArticle =
509 "<h1></h1>" +
510 "<div itemscope itemtype=\"http://schema.org/Article\">" +
511 "<div itemscope itemtype=\"http://schema.org/Article\">" +
512 "</div>" +
513 "</div>";
514
515 final String expected =
516 "<div itemscope=\"\" itemtype=\"http://schema.org/Article\">" +
517 "<div itemscope=\"\" itemtype=\"http://schema.org/Article\">" +
518 "</div>" +
519 "</div>";
520
521 Element result = getArticleElement(htmlArticle);
522 assertEquals(expected, result.getString());
523 }
524
525 public void testOnlyProcessSchemaOrgArticleNestedWithNestedHiddenArticleElem ent() {
526 final String htmlArticle =
527 "<h1></h1>" +
528 "<div itemscope itemtype=\"http://schema.org/Article\">" +
529 "<div itemscope itemtype=\"http://schema.org/Article\">" +
530 "</div>" +
531 "<div itemscope itemtype=\"http://schema.org/Article\" " +
532 "style=\"display:none\">" +
533 "</div>" +
534 "</div>";
535
536 final String expected =
537 "<div itemscope=\"\" itemtype=\"http://schema.org/Article\">" +
538 "<div itemscope=\"\" itemtype=\"http://schema.org/Article\">" +
539 "</div>" +
540 "<div itemscope=\"\" itemtype=\"http://schema.org/Article\" " +
541 "style=\"display:none\">" +
542 "</div>" +
543 "</div>";
544
545 Element result = getArticleElement(htmlArticle);
546 assertEquals(expected, result.getString());
547 }
548
549 public void testOnlyProcessSchemaOrgArticleNestedWithHiddenArticleElement() {
550 final String paragraph = "<p></p>";
551
552 final String htmlArticle =
553 "<h1></h1>" +
554 "<div itemscope itemtype=\"http://schema.org/Article\">" +
555 "<div itemscope itemtype=\"http://schema.org/Article\">" +
556 "</div>" +
557 "</div>" +
558 "<div itemscope itemtype=\"http://schema.org/Article\" " +
559 "style=\"display:none\">" +
560 "</div>";
561
562 final String expected =
563 "<div itemscope=\"\" itemtype=\"http://schema.org/Article\">" +
564 "<div itemscope=\"\" itemtype=\"http://schema.org/Article\">" +
565 "</div>" +
566 "</div>";
567
568 Element result = getArticleElement(htmlArticle);
569 assertEquals(expected, result.getString());
570 }
571
572 public void testOnlyProcessSchemaOrgNonArticleMovie() {
573 final String htmlArticle =
574 "<h1></h1>" +
575 "<div itemscope itemtype=\"http://schema.org/Movie\">" +
576 "</div>";
577
578 // Non-article schema.org types should not use the fast path.
579 Element result = getArticleElement(htmlArticle);
580 assertNull(result);
581 }
582
583 private Element getArticleElement(String html) {
584 mBody.setInnerHTML(html);
585 return DomUtil.getArticleElement(mRoot);
586 }
587
381 public void testGetArea() { 588 public void testGetArea() {
382 String elements = 589 String elements =
383 "<div style=\"width: 200px; height: 100px\">w</div>" + 590 "<div style=\"width: 200px; height: 100px\">w</div>" +
384 "<div style=\"width: 300px;\">" + 591 "<div style=\"width: 300px;\">" +
385 "<div style=\"width: 300px; height: 200px\"></div>" + 592 "<div style=\"width: 300px; height: 200px\"></div>" +
386 "</div>" + 593 "</div>" +
387 "<div style=\"width: 400px; height: 100px\">" + 594 "<div style=\"width: 400px; height: 100px\">" +
388 "<div style=\"height: 100%\"></div>" + 595 "<div style=\"height: 100%\"></div>" +
389 "</div>"; 596 "</div>";
390 mBody.setInnerHTML(elements); 597 mBody.setInnerHTML(elements);
391 598
392 Element element = mBody.getFirstChildElement(); 599 Element element = mBody.getFirstChildElement();
393 assertEquals(200*100, DomUtil.getArea(element)); 600 assertEquals(200*100, DomUtil.getArea(element));
394 601
395 element = element.getNextSiblingElement(); 602 element = element.getNextSiblingElement();
396 assertEquals(300*200, DomUtil.getArea(element)); 603 assertEquals(300*200, DomUtil.getArea(element));
397 604
398 element = element.getNextSiblingElement(); 605 element = element.getNextSiblingElement();
399 assertEquals(400*100, DomUtil.getArea(element)); 606 assertEquals(400*100, DomUtil.getArea(element));
400 607
401 element = element.getFirstChildElement(); 608 element = element.getFirstChildElement();
402 assertEquals(400*100, DomUtil.getArea(element)); 609 assertEquals(400*100, DomUtil.getArea(element));
403 } 610 }
404 } 611 }
OLDNEW
« no previous file with comments | « javatests/org/chromium/distiller/ContentExtractorTest.java ('k') | javatests/org/chromium/distiller/TestUtil.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698