| 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 |