| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2008, 2011, 2012, 2014 Apple Inc. All rights reserved. | 2 * Copyright (C) 2008, 2011, 2012, 2014 Apple Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * | 7 * |
| 8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 93 if (HTMLTableRowElement* row = Traversal<HTMLTableRowElement>::first
Child(*child)) | 93 if (HTMLTableRowElement* row = Traversal<HTMLTableRowElement>::first
Child(*child)) |
| 94 return row; | 94 return row; |
| 95 } | 95 } |
| 96 } | 96 } |
| 97 | 97 |
| 98 return 0; | 98 return 0; |
| 99 } | 99 } |
| 100 | 100 |
| 101 HTMLTableRowElement* HTMLTableRowsCollection::lastRow(HTMLTableElement& table) | 101 HTMLTableRowElement* HTMLTableRowsCollection::lastRow(HTMLTableElement& table) |
| 102 { | 102 { |
| 103 for (HTMLElement* child = Traversal<HTMLElement>::lastChild(table); child; c
hild = Traversal<HTMLElement>::previousSibling(*child)) { | 103 for (HTMLElement* tfoot = Traversal<HTMLElement>::lastChild(table, HasHTMLTa
gName(tfootTag)); tfoot; tfoot = Traversal<HTMLElement>::previousSibling(*tfoot,
HasHTMLTagName(tfootTag))) { |
| 104 if (child->hasTagName(tfootTag)) { | 104 if (HTMLTableRowElement* lastRow = Traversal<HTMLTableRowElement>::lastC
hild(*tfoot)) |
| 105 if (HTMLTableRowElement* lastRow = Traversal<HTMLTableRowElement>::l
astChild(*child)) | |
| 106 return lastRow; | 105 return lastRow; |
| 107 } | |
| 108 } | 106 } |
| 109 | 107 |
| 110 for (HTMLElement* child = Traversal<HTMLElement>::lastChild(table); child; c
hild = Traversal<HTMLElement>::previousSibling(*child)) { | 108 for (HTMLElement* child = Traversal<HTMLElement>::lastChild(table); child; c
hild = Traversal<HTMLElement>::previousSibling(*child)) { |
| 111 if (isHTMLTableRowElement(child)) | 109 if (isHTMLTableRowElement(child)) |
| 112 return toHTMLTableRowElement(child); | 110 return toHTMLTableRowElement(child); |
| 113 if (child->hasTagName(tbodyTag)) { | 111 if (child->hasTagName(tbodyTag)) { |
| 114 if (HTMLTableRowElement* lastRow = Traversal<HTMLTableRowElement>::l
astChild(*child)) | 112 if (HTMLTableRowElement* lastRow = Traversal<HTMLTableRowElement>::l
astChild(*child)) |
| 115 return lastRow; | 113 return lastRow; |
| 116 } | 114 } |
| 117 } | 115 } |
| 118 | 116 |
| 119 for (HTMLElement* child = Traversal<HTMLElement>::lastChild(table); child; c
hild = Traversal<HTMLElement>::previousSibling(*child)) { | 117 for (HTMLElement* thead = Traversal<HTMLElement>::lastChild(table, HasHTMLTa
gName(theadTag)); thead; thead = Traversal<HTMLElement>::previousSibling(*thead,
HasHTMLTagName(theadTag))) { |
| 120 if (child->hasTagName(theadTag)) { | 118 if (HTMLTableRowElement* lastRow = Traversal<HTMLTableRowElement>::lastC
hild(*thead)) |
| 121 if (HTMLTableRowElement* lastRow = Traversal<HTMLTableRowElement>::l
astChild(*child)) | 119 return lastRow; |
| 122 return lastRow; | |
| 123 } | |
| 124 } | 120 } |
| 125 | 121 |
| 126 return 0; | 122 return 0; |
| 127 } | 123 } |
| 128 | 124 |
| 129 // Must call get() on the table in case that argument is compiled before derefer
encing the | 125 // Must call get() on the table in case that argument is compiled before derefer
encing the |
| 130 // table to get at the collection cache. Order of argument evaluation is undefin
ed and can | 126 // table to get at the collection cache. Order of argument evaluation is undefin
ed and can |
| 131 // differ between compilers. | 127 // differ between compilers. |
| 132 HTMLTableRowsCollection::HTMLTableRowsCollection(ContainerNode& table) | 128 HTMLTableRowsCollection::HTMLTableRowsCollection(ContainerNode& table) |
| 133 : HTMLCollection(table, TableRows, OverridesItemAfter) | 129 : HTMLCollection(table, TableRows, OverridesItemAfter) |
| 134 { | 130 { |
| 135 ASSERT(isHTMLTableElement(table)); | 131 ASSERT(isHTMLTableElement(table)); |
| 136 } | 132 } |
| 137 | 133 |
| 138 PassRefPtrWillBeRawPtr<HTMLTableRowsCollection> HTMLTableRowsCollection::create(
ContainerNode& table, CollectionType type) | 134 PassRefPtrWillBeRawPtr<HTMLTableRowsCollection> HTMLTableRowsCollection::create(
ContainerNode& table, CollectionType type) |
| 139 { | 135 { |
| 140 ASSERT_UNUSED(type, type == TableRows); | 136 ASSERT_UNUSED(type, type == TableRows); |
| 141 return adoptRefWillBeNoop(new HTMLTableRowsCollection(table)); | 137 return adoptRefWillBeNoop(new HTMLTableRowsCollection(table)); |
| 142 } | 138 } |
| 143 | 139 |
| 144 Element* HTMLTableRowsCollection::virtualItemAfter(Element* previous) const | 140 Element* HTMLTableRowsCollection::virtualItemAfter(Element* previous) const |
| 145 { | 141 { |
| 146 return rowAfter(toHTMLTableElement(ownerNode()), toHTMLTableRowElement(previ
ous)); | 142 return rowAfter(toHTMLTableElement(ownerNode()), toHTMLTableRowElement(previ
ous)); |
| 147 } | 143 } |
| 148 | 144 |
| 149 } | 145 } |
| OLD | NEW |