| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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.Element; | 7 import com.google.gwt.dom.client.Element; |
| 8 import com.google.gwt.dom.client.MetaElement; | 8 import com.google.gwt.dom.client.MetaElement; |
| 9 import com.google.gwt.dom.client.NodeList; | 9 import com.google.gwt.dom.client.NodeList; |
| 10 import com.google.gwt.dom.client.TableCellElement; | 10 import com.google.gwt.dom.client.TableCellElement; |
| (...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 190 } | 190 } |
| 191 } | 191 } |
| 192 | 192 |
| 193 // 9) Table occupying > 95% of document width without viewport meta is l
ayout table; | 193 // 9) Table occupying > 95% of document width without viewport meta is l
ayout table; |
| 194 // viewport condition is not in said url, added here for typical mobile-
optimized sites. | 194 // viewport condition is not in said url, added here for typical mobile-
optimized sites. |
| 195 // The order here is different from said url: the latter has it after #1
4 (>=20 rows is | 195 // The order here is different from said url: the latter has it after #1
4 (>=20 rows is |
| 196 // data table), but our eval sets indicate the need to bump this way up
to here, because | 196 // data table), but our eval sets indicate the need to bump this way up
to here, because |
| 197 // many (old) pages have layout tables with the "summary" attribute (#10
). | 197 // many (old) pages have layout tables with the "summary" attribute (#10
). |
| 198 Element docElement = t.getOwnerDocument().getDocumentElement(); | 198 Element docElement = t.getOwnerDocument().getDocumentElement(); |
| 199 int docWidth = docElement.getOffsetWidth(); | 199 int docWidth = docElement.getOffsetWidth(); |
| 200 if (docWidth > 0 && (double) t.getOffsetWidth() > 0.95 * (double) docWid
th) { | 200 if (docWidth > 0 && t.getOffsetWidth() > 0.95 * docWidth) { |
| 201 boolean viewportFound = false; | 201 boolean viewportFound = false; |
| 202 NodeList<Element> allMeta = docElement.getElementsByTagName("META"); | 202 NodeList<Element> allMeta = docElement.getElementsByTagName("META"); |
| 203 for (int i = 0; i < allMeta.getLength() && !viewportFound; i++) { | 203 for (int i = 0; i < allMeta.getLength() && !viewportFound; i++) { |
| 204 MetaElement meta = MetaElement.as(allMeta.getItem(i)); | 204 MetaElement meta = MetaElement.as(allMeta.getItem(i)); |
| 205 viewportFound = meta.getName().equalsIgnoreCase("viewport"); | 205 viewportFound = meta.getName().equalsIgnoreCase("viewport"); |
| 206 } | 206 } |
| 207 if (!viewportFound) { | 207 if (!viewportFound) { |
| 208 return logAndReturn(Reason.MORE_95_PERCENT_DOC_WIDTH, "", Type.L
AYOUT); | 208 return logAndReturn(Reason.MORE_95_PERCENT_DOC_WIDTH, "", Type.L
AYOUT); |
| 209 } | 209 } |
| 210 } | 210 } |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 250 // advertisement elements) is layout table. | 250 // advertisement elements) is layout table. |
| 251 if (hasOneOfElements(directDescendants, sObjectTags)) { | 251 if (hasOneOfElements(directDescendants, sObjectTags)) { |
| 252 return logAndReturn(Reason.EMBED_OBJECT_APPLET_IFRAME, "", Type.LAYO
UT); | 252 return logAndReturn(Reason.EMBED_OBJECT_APPLET_IFRAME, "", Type.LAYO
UT); |
| 253 } | 253 } |
| 254 | 254 |
| 255 // 17) Table occupying > 90% of document height is layout table. | 255 // 17) Table occupying > 90% of document height is layout table. |
| 256 // This is not in said url, added here because many (old) pages have tab
les that don't fall | 256 // This is not in said url, added here because many (old) pages have tab
les that don't fall |
| 257 // into any of the above heuristics but are for layout, and hence should
n't default to data | 257 // into any of the above heuristics but are for layout, and hence should
n't default to data |
| 258 // by #18. | 258 // by #18. |
| 259 int docHeight = docElement.getOffsetHeight(); | 259 int docHeight = docElement.getOffsetHeight(); |
| 260 if (docHeight > 0 && (double) t.getOffsetHeight() > 0.9 * (double) docHe
ight) { | 260 if (docHeight > 0 && t.getOffsetHeight() > 0.9 * docHeight) { |
| 261 return logAndReturn(Reason.MORE_90_PERCENT_DOC_HEIGHT, "", Type.LAYO
UT); | 261 return logAndReturn(Reason.MORE_90_PERCENT_DOC_HEIGHT, "", Type.LAYO
UT); |
| 262 } | 262 } |
| 263 | 263 |
| 264 // 18) Otherwise, it's data table. | 264 // 18) Otherwise, it's data table. |
| 265 return logAndReturn(Reason.DEFAULT, "", Type.DATA); | 265 return logAndReturn(Reason.DEFAULT, "", Type.DATA); |
| 266 } | 266 } |
| 267 | 267 |
| 268 private static boolean hasNestedTables(Element t) { | 268 private static boolean hasNestedTables(Element t) { |
| 269 return t.getElementsByTagName("TABLE").getLength() > 0; | 269 return t.getElementsByTagName("TABLE").getLength() > 0; |
| 270 } | 270 } |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 323 } | 323 } |
| 324 | 324 |
| 325 private static Type logAndReturn(Reason reason, String append, Type type) { | 325 private static Type logAndReturn(Reason reason, String append, Type type) { |
| 326 if (LogUtil.isLoggable(LogUtil.DEBUG_LEVEL_VISIBILITY_INFO)) { | 326 if (LogUtil.isLoggable(LogUtil.DEBUG_LEVEL_VISIBILITY_INFO)) { |
| 327 LogUtil.logToConsole(reason + append + " -> " + type); | 327 LogUtil.logToConsole(reason + append + " -> " + type); |
| 328 } | 328 } |
| 329 sReason = reason; | 329 sReason = reason; |
| 330 return type; | 330 return type; |
| 331 } | 331 } |
| 332 } | 332 } |
| OLD | NEW |