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

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

Powered by Google App Engine
This is Rietveld 408576698