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 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 Loading... | |
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 Loading... | |
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 } |
OLD | NEW |