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.Document; | 7 import com.google.gwt.dom.client.Document; |
8 import com.google.gwt.dom.client.Element; | 8 import com.google.gwt.dom.client.Element; |
9 import com.google.gwt.dom.client.NodeList; | 9 import com.google.gwt.dom.client.NodeList; |
10 import com.google.gwt.dom.client.TableElement; | 10 import com.google.gwt.dom.client.TableElement; |
11 | 11 |
12 public class TableClassifierTest extends DomDistillerJsTestCase { | 12 public class TableClassifierTest extends DomDistillerJsTestCase { |
| 13 public void testDocumentWidth() { |
| 14 assertEquals(800, mRoot.getOffsetWidth()); |
| 15 assertEquals("800px", DomUtil.getComputedStyle(mRoot).getProperty("width
")); |
| 16 } |
| 17 |
13 public void testInputElement() { | 18 public void testInputElement() { |
14 Element input = Document.get().createTextInputElement(); | 19 Element input = Document.get().createTextInputElement(); |
15 mBody.appendChild(input); | 20 mBody.appendChild(input); |
16 TableElement table = createDefaultTableWithTH(); | 21 TableElement table = createDefaultTableWithTH(); |
17 input.appendChild(table); | 22 input.appendChild(table); |
18 assertEquals(TableClassifier.Type.LAYOUT, TableClassifier.table(table)); | 23 assertEquals(TableClassifier.Type.LAYOUT, TableClassifier.table(table)); |
19 assertEquals(TableClassifier.Reason.INSIDE_EDITABLE_AREA, TableClassifie
r.sReason); | 24 assertEquals(TableClassifier.Reason.INSIDE_EDITABLE_AREA, TableClassifie
r.sReason); |
20 } | 25 } |
21 | 26 |
22 public void testContentEditableAttribute() { | 27 public void testContentEditableAttribute() { |
(...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
287 abbr.setInnerHTML("HTML"); | 292 abbr.setInnerHTML("HTML"); |
288 td.appendChild(abbr); | 293 td.appendChild(abbr); |
289 Element tr = getFirstElement(table, "TR"); | 294 Element tr = getFirstElement(table, "TR"); |
290 tr.appendChild(td); | 295 tr.appendChild(td); |
291 assertEquals(TableClassifier.Type.DATA, TableClassifier.table(table)); | 296 assertEquals(TableClassifier.Type.DATA, TableClassifier.table(table)); |
292 assertEquals(TableClassifier.Reason.ONLY_HAS_ABBR, TableClassifier.sReas
on); | 297 assertEquals(TableClassifier.Reason.ONLY_HAS_ABBR, TableClassifier.sReas
on); |
293 } | 298 } |
294 | 299 |
295 public void testWideTable() { | 300 public void testWideTable() { |
296 TableElement table = createDefaultTableWithNoTH(); | 301 TableElement table = createDefaultTableWithNoTH(); |
297 Element root = Document.get().getDocumentElement(); | 302 int rootWidth = mRoot.getOffsetWidth(); |
298 int width = (int) ((0.95 * root.getOffsetWidth()) + 1.0); | 303 int width = (int) ((0.95 * rootWidth) + 1.0); |
299 table.setAttribute("style", "width:" + width + "px"); | 304 table.setAttribute("style", "width:" + width + "px"); |
300 NodeList<Element> bodies = root.getElementsByTagName("BODY"); | 305 assertEquals(rootWidth, mRoot.getOffsetWidth()); |
301 assertTrue(bodies.getLength() > 0); | |
302 bodies.getItem(0).appendChild(table); | |
303 assertEquals(TableClassifier.Type.LAYOUT, TableClassifier.table(table)); | 306 assertEquals(TableClassifier.Type.LAYOUT, TableClassifier.table(table)); |
304 assertEquals(TableClassifier.Reason.MORE_95_PERCENT_DOC_WIDTH, TableClas
sifier.sReason); | 307 assertEquals(TableClassifier.Reason.MORE_95_PERCENT_DOC_WIDTH, TableClas
sifier.sReason); |
305 | 308 |
306 // Test same wide table with viewport meta. | 309 // Test same wide table with viewport meta. |
307 NodeList<Element> heads = root.getElementsByTagName("HEAD"); | |
308 assertTrue(heads.getLength() > 0); | |
309 Element meta = TestUtil.createMetaName("viewport", "width=device-width")
; | 310 Element meta = TestUtil.createMetaName("viewport", "width=device-width")
; |
310 heads.getItem(0).appendChild(meta); | 311 mHead.appendChild(meta); |
311 assertEquals(TableClassifier.Type.LAYOUT, TableClassifier.table(table)); | 312 assertEquals(TableClassifier.Type.LAYOUT, TableClassifier.table(table)); |
312 assertEquals(TableClassifier.Reason.LESS_EQ_10_CELLS, TableClassifier.sR
eason); | 313 assertEquals(TableClassifier.Reason.LESS_EQ_10_CELLS, TableClassifier.sR
eason); |
313 meta.removeFromParent(); | 314 meta.removeFromParent(); |
314 } | 315 } |
315 | 316 |
316 public void testSummaryAttribute() { | 317 public void testSummaryAttribute() { |
317 TableElement table = createDefaultTableWithNoTH(); | 318 TableElement table = createDefaultTableWithNoTH(); |
318 table.setAttribute("summary", "Testing summary attribute"); | 319 table.setAttribute("summary", "Testing summary attribute"); |
319 assertEquals(TableClassifier.Type.DATA, TableClassifier.table(table)); | 320 assertEquals(TableClassifier.Type.DATA, TableClassifier.table(table)); |
320 assertEquals(TableClassifier.Reason.SUMMARY, TableClassifier.sReason); | 321 assertEquals(TableClassifier.Reason.SUMMARY, TableClassifier.sReason); |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
446 | 447 |
447 public void testAppletElement() { | 448 public void testAppletElement() { |
448 TableElement table = createBigDefaultTableWithNoTH(); | 449 TableElement table = createBigDefaultTableWithNoTH(); |
449 Element embed = Document.get().createElement("APPLET"); | 450 Element embed = Document.get().createElement("APPLET"); |
450 getFirstElement(table, "TD").appendChild(embed); | 451 getFirstElement(table, "TD").appendChild(embed); |
451 assertEquals(TableClassifier.Type.LAYOUT, TableClassifier.table(table)); | 452 assertEquals(TableClassifier.Type.LAYOUT, TableClassifier.table(table)); |
452 assertEquals(TableClassifier.Reason.EMBED_OBJECT_APPLET_IFRAME, TableCla
ssifier.sReason); | 453 assertEquals(TableClassifier.Reason.EMBED_OBJECT_APPLET_IFRAME, TableCla
ssifier.sReason); |
453 } | 454 } |
454 | 455 |
455 public void testIframeElement() { | 456 public void testIframeElement() { |
| 457 int rootWidth = mRoot.getOffsetWidth(); |
456 TableElement table = createBigDefaultTableWithNoTH(); | 458 TableElement table = createBigDefaultTableWithNoTH(); |
457 Element embed = Document.get().createElement("IFRAME"); | 459 Element embed = Document.get().createElement("IFRAME"); |
458 getFirstElement(table, "TD").appendChild(embed); | 460 getFirstElement(table, "TD").appendChild(embed); |
| 461 assertEquals(rootWidth, mRoot.getOffsetWidth()); |
459 assertEquals(TableClassifier.Type.LAYOUT, TableClassifier.table(table)); | 462 assertEquals(TableClassifier.Type.LAYOUT, TableClassifier.table(table)); |
460 assertEquals(TableClassifier.Reason.EMBED_OBJECT_APPLET_IFRAME, TableCla
ssifier.sReason); | 463 assertEquals(TableClassifier.Reason.EMBED_OBJECT_APPLET_IFRAME, TableCla
ssifier.sReason); |
461 } | 464 } |
462 | 465 |
463 public void testTallTable() { | 466 public void testTallTable() { |
464 TableElement table = createBigDefaultTableWithNoTH(); | 467 TableElement table = createBigDefaultTableWithNoTH(); |
465 Element root = Document.get().getDocumentElement(); | 468 // With min-height, the height of mRoot remains the same after resizing
the table. |
466 int height = (int) ((0.90 * root.getOffsetHeight()) + 1.0); | 469 mRoot.getStyle().setProperty("min-height", "200px"); |
| 470 int rootHeight = mRoot.getOffsetHeight(); |
| 471 int height = (int) ((0.90 * rootHeight) + 1.0); |
467 table.setAttribute("style", "height:" + height + "px"); | 472 table.setAttribute("style", "height:" + height + "px"); |
468 NodeList<Element> bodies = root.getElementsByTagName("BODY"); | 473 assertEquals(height, table.getOffsetHeight()); |
469 assertTrue(bodies.getLength() > 0); | 474 assertEquals(rootHeight, mRoot.getOffsetHeight()); |
470 bodies.getItem(0).appendChild(table); | |
471 assertEquals(TableClassifier.Type.LAYOUT, TableClassifier.table(table)); | 475 assertEquals(TableClassifier.Type.LAYOUT, TableClassifier.table(table)); |
472 assertEquals(TableClassifier.Reason.MORE_90_PERCENT_DOC_HEIGHT, TableCla
ssifier.sReason); | 476 assertEquals(TableClassifier.Reason.MORE_90_PERCENT_DOC_HEIGHT, TableCla
ssifier.sReason); |
473 } | 477 } |
474 | 478 |
475 private TableElement createTable(String html) { | 479 private TableElement createTable(String html) { |
476 TableElement table = Document.get().createTableElement(); | 480 TableElement table = Document.get().createTableElement(); |
477 table.setInnerHTML(html); | 481 table.setInnerHTML(html); |
478 mBody.appendChild(table); | 482 mBody.appendChild(table); |
479 return table; | 483 return table; |
480 } | 484 } |
481 | 485 |
482 private TableElement createDefaultTableWithTH() { | 486 private TableElement createDefaultTableWithTH() { |
483 String tableStr = "<tbody>" + | 487 String tableStr = "<tbody>" + |
484 "<tr>" + | 488 "<tr>" + |
485 "<th>heading1</th>" + | 489 "<th>heading1</th>" + |
486 "<th>heading2</th>" + | 490 "<th>heading2</th>" + |
487 "</tr>" + | 491 "</tr>" + |
488 "<tr>" + | 492 "<tr>" + |
489 "<td>row1col1</td>" + | 493 "<td>row1col1</td>" + |
490 "<td>row1col2</td>" + | 494 "<td>row1col2</td>" + |
491 "</tr>" + | 495 "</tr>" + |
492 "<tr>" + | 496 "<tr>" + |
493 "<td>row2col1</td>" + | 497 "<td>row2col1</td>" + |
494 "<td>row2col2</td>" + | 498 "<td>row2col2</td>" + |
495 "</tr>" + | 499 "</tr>" + |
496 "</tbody>"; | 500 "</tbody>"; |
497 TableElement table = createTable(tableStr); | 501 TableElement table = createTable(tableStr); |
| 502 mBody.appendChild(table); |
498 assertEquals(TableClassifier.Type.DATA, TableClassifier.table(table)); | 503 assertEquals(TableClassifier.Type.DATA, TableClassifier.table(table)); |
499 assertEquals(TableClassifier.Reason.CAPTION_THEAD_TFOOT_COLGROUP_COL_TH, | 504 assertEquals(TableClassifier.Reason.CAPTION_THEAD_TFOOT_COLGROUP_COL_TH, |
500 TableClassifier.sReason); | 505 TableClassifier.sReason); |
501 mBody.appendChild(table); | |
502 return table; | 506 return table; |
503 } | 507 } |
504 | 508 |
505 private TableElement createDefaultTableWithNoTH() { | 509 private TableElement createDefaultTableWithNoTH() { |
506 String tableStr = "<tbody>" + | 510 String tableStr = "<tbody>" + |
507 "<tr>" + | 511 "<tr>" + |
508 "<td>row1col1</td>" + | 512 "<td>row1col1</td>" + |
509 "<td>row1col2</td>" + | 513 "<td>row1col2</td>" + |
510 "</tr>" + | 514 "</tr>" + |
511 "<tr>" + | 515 "<tr>" + |
512 "<td>row2col1</td>" + | 516 "<td>row2col1</td>" + |
513 "<td>row2col2</td>" + | 517 "<td>row2col2</td>" + |
514 "</tr>" + | 518 "</tr>" + |
515 "</tbody>"; | 519 "</tbody>"; |
516 TableElement table = createTable(tableStr); | 520 TableElement table = createTable(tableStr); |
| 521 mBody.appendChild(table); |
517 assertEquals(TableClassifier.Type.LAYOUT, TableClassifier.table(table)); | 522 assertEquals(TableClassifier.Type.LAYOUT, TableClassifier.table(table)); |
518 assertEquals(TableClassifier.Reason.LESS_EQ_10_CELLS, TableClassifier.sR
eason); | 523 assertEquals(TableClassifier.Reason.LESS_EQ_10_CELLS, TableClassifier.sR
eason); |
519 mBody.appendChild(table); | |
520 return table; | 524 return table; |
521 } | 525 } |
522 | 526 |
523 private TableElement createBigDefaultTableWithNoTH() { | 527 private TableElement createBigDefaultTableWithNoTH() { |
524 String tableStr = "<tbody>" + | 528 String tableStr = "<tbody>" + |
525 "<tr>" + | 529 "<tr>" + |
526 "<td>row1col1</td>" + | 530 "<td>row1col1</td>" + |
527 "<td>row1col2</td>" + | 531 "<td>row1col2</td>" + |
528 "<td>row1col3</td>" + | 532 "<td>row1col3</td>" + |
529 "<td>row1col4</td>" + | 533 "<td>row1col4</td>" + |
530 "</tr>" + | 534 "</tr>" + |
531 "<tr>" + | 535 "<tr>" + |
532 "<td>row2col1</td>" + | 536 "<td>row2col1</td>" + |
533 "<td>row2col2</td>" + | 537 "<td>row2col2</td>" + |
534 "<td>row2col3</td>" + | 538 "<td>row2col3</td>" + |
535 "<td>row2col4</td>" + | 539 "<td>row2col4</td>" + |
536 "</tr>" + | 540 "</tr>" + |
537 "<tr>" + | 541 "<tr>" + |
538 "<td>row3col1</td>" + | 542 "<td>row3col1</td>" + |
539 "<td>row3col2</td>" + | 543 "<td>row3col2</td>" + |
540 "<td>row3col3</td>" + | 544 "<td>row3col3</td>" + |
541 "<td>row3col4</td>" + | 545 "<td>row3col4</td>" + |
542 "</tr>" + | 546 "</tr>" + |
543 "</tbody>"; | 547 "</tbody>"; |
544 TableElement table = createTable(tableStr); | 548 TableElement table = createTable(tableStr); |
| 549 mBody.appendChild(table); |
545 assertEquals(TableClassifier.Type.DATA, TableClassifier.table(table)); | 550 assertEquals(TableClassifier.Type.DATA, TableClassifier.table(table)); |
546 assertEquals(TableClassifier.Reason.DEFAULT, TableClassifier.sReason); | 551 assertEquals(TableClassifier.Reason.DEFAULT, TableClassifier.sReason); |
547 mBody.appendChild(table); | |
548 return table; | 552 return table; |
549 } | 553 } |
550 | 554 |
551 private void setRoleForFirstElement(Element table, String tagname, String ro
le) { | 555 private void setRoleForFirstElement(Element table, String tagname, String ro
le) { |
552 setAttributeForFirstElement(table, tagname, "role", role); | 556 setAttributeForFirstElement(table, tagname, "role", role); |
553 } | 557 } |
554 | 558 |
555 private void setAttributeForFirstElement(Element table, String tagname, Stri
ng attrName, | 559 private void setAttributeForFirstElement(Element table, String tagname, Stri
ng attrName, |
556 String attrValue) { | 560 String attrValue) { |
557 getFirstElement(table, tagname).setAttribute(attrName, attrValue); | 561 getFirstElement(table, tagname).setAttribute(attrName, attrValue); |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
589 | 593 |
590 private TableElement createNestedTable(String nestedTableStr, Element parent
Table) { | 594 private TableElement createNestedTable(String nestedTableStr, Element parent
Table) { |
591 TableElement nestedTable = createTable(nestedTableStr); | 595 TableElement nestedTable = createTable(nestedTableStr); |
592 // Insert nested table into 1st row of |parentTable|. | 596 // Insert nested table into 1st row of |parentTable|. |
593 NodeList<Element> rows = parentTable.getElementsByTagName("TR"); | 597 NodeList<Element> rows = parentTable.getElementsByTagName("TR"); |
594 assertEquals(2, rows.getLength()); | 598 assertEquals(2, rows.getLength()); |
595 rows.getItem(0).appendChild(nestedTable); | 599 rows.getItem(0).appendChild(nestedTable); |
596 return nestedTable; | 600 return nestedTable; |
597 } | 601 } |
598 } | 602 } |
OLD | NEW |