OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
4 * (C) 2001 Dirk Mueller (mueller@kde.org) | 4 * (C) 2001 Dirk Mueller (mueller@kde.org) |
5 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r
ights reserved. | 5 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r
ights reserved. |
6 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) | 6 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) |
7 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo
bile.com/) | 7 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo
bile.com/) |
8 * | 8 * |
9 * This library is free software; you can redistribute it and/or | 9 * This library is free software; you can redistribute it and/or |
10 * modify it under the terms of the GNU Library General Public | 10 * modify it under the terms of the GNU Library General Public |
(...skipping 1485 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1496 return; | 1496 return; |
1497 const AtomicString& value = toElement(node).getAttribute(name); | 1497 const AtomicString& value = toElement(node).getAttribute(name); |
1498 if (value.isEmpty()) | 1498 if (value.isEmpty()) |
1499 return; | 1499 return; |
1500 ostream << ' ' << name.toString().utf8().data() << '=' << value; | 1500 ostream << ' ' << name.toString().utf8().data() << '=' << value; |
1501 } | 1501 } |
1502 | 1502 |
1503 // |std::ostream| version of |Node::showNode| | 1503 // |std::ostream| version of |Node::showNode| |
1504 std::ostream& operator<<(std::ostream& ostream, const Node& node) | 1504 std::ostream& operator<<(std::ostream& ostream, const Node& node) |
1505 { | 1505 { |
| 1506 if (node.getNodeType() == Node::kProcessingInstructionNode) |
| 1507 return ostream << "?" << node.nodeName().utf8().data(); |
| 1508 if (node.isShadowRoot()) { |
| 1509 // nodeName of ShadowRoot is #document-fragment. It's confused with |
| 1510 // DocumentFragment. |
| 1511 return ostream << "#shadow-root"; |
| 1512 } |
| 1513 if (node.isDocumentTypeNode()) |
| 1514 return ostream << "DOCTYPE " << node.nodeName().utf8().data(); |
| 1515 |
1506 // We avoid to print "" by utf8().data(). | 1516 // We avoid to print "" by utf8().data(). |
1507 ostream << node.nodeName().utf8().data(); | 1517 ostream << node.nodeName().utf8().data(); |
1508 if (node.isTextNode()) | 1518 if (node.isTextNode()) |
1509 return ostream << " " << node.nodeValue(); | 1519 return ostream << " " << node.nodeValue(); |
1510 dumpAttributeDesc(node, HTMLNames::idAttr, ostream); | 1520 dumpAttributeDesc(node, HTMLNames::idAttr, ostream); |
1511 dumpAttributeDesc(node, HTMLNames::classAttr, ostream); | 1521 dumpAttributeDesc(node, HTMLNames::classAttr, ostream); |
1512 dumpAttributeDesc(node, HTMLNames::styleAttr, ostream); | 1522 dumpAttributeDesc(node, HTMLNames::styleAttr, ostream); |
| 1523 if (hasEditableStyle(node)) |
| 1524 ostream << " (editable)"; |
| 1525 if (node.document().focusedElement() == &node) |
| 1526 ostream << " (focused)"; |
1513 return ostream; | 1527 return ostream; |
1514 } | 1528 } |
1515 | 1529 |
1516 std::ostream& operator<<(std::ostream& ostream, const Node* node) | 1530 std::ostream& operator<<(std::ostream& ostream, const Node* node) |
1517 { | 1531 { |
1518 if (!node) | 1532 if (!node) |
1519 return ostream << "null"; | 1533 return ostream << "null"; |
1520 return ostream << *node; | 1534 return ostream << *node; |
1521 } | 1535 } |
1522 | 1536 |
1523 #ifndef NDEBUG | 1537 #ifndef NDEBUG |
1524 | 1538 |
1525 static void appendAttributeDesc(const Node* node, StringBuilder& stringBuilder,
const QualifiedName& name, const char* attrDesc) | |
1526 { | |
1527 if (!node->isElementNode()) | |
1528 return; | |
1529 | |
1530 String attr = toElement(node)->getAttribute(name); | |
1531 if (attr.isEmpty()) | |
1532 return; | |
1533 | |
1534 stringBuilder.append(attrDesc); | |
1535 stringBuilder.append("=\""); | |
1536 stringBuilder.append(attr); | |
1537 stringBuilder.append("\""); | |
1538 } | |
1539 | |
1540 void Node::showNode(const char* prefix) const | 1539 void Node::showNode(const char* prefix) const |
1541 { | 1540 { |
1542 if (!prefix) | 1541 std::stringstream stream; |
1543 prefix = ""; | 1542 if (prefix) |
1544 if (isTextNode()) { | 1543 stream << prefix; |
1545 String value = nodeValue(); | 1544 stream << *this << "\n"; |
1546 value.replace('\\', "\\\\"); | 1545 WTFLogAlways("%s", stream.str().c_str()); |
1547 value.replace('\n', "\\n"); | |
1548 WTFLogAlways("%s%s\t%p \"%s\"\n", prefix, nodeName().utf8().data(), this
, value.utf8().data()); | |
1549 } else if (isDocumentTypeNode()) { | |
1550 WTFLogAlways("%sDOCTYPE %s\t%p\n", prefix, nodeName().utf8().data(), thi
s); | |
1551 } else if (getNodeType() == kProcessingInstructionNode) { | |
1552 WTFLogAlways("%s?%s\t%p\n", prefix, nodeName().utf8().data(), this); | |
1553 } else if (isShadowRoot()) { | |
1554 // nodeName of ShadowRoot is #document-fragment. It's confused with | |
1555 // DocumentFragment. | |
1556 WTFLogAlways("%s#shadow-root\t%p\n", prefix, this); | |
1557 } else { | |
1558 StringBuilder attrs; | |
1559 appendAttributeDesc(this, attrs, idAttr, " ID"); | |
1560 appendAttributeDesc(this, attrs, classAttr, " CLASS"); | |
1561 appendAttributeDesc(this, attrs, styleAttr, " STYLE"); | |
1562 if (hasEditableStyle(*this)) | |
1563 attrs.append(" (editable)"); | |
1564 if (document().focusedElement() == this) | |
1565 attrs.append(" (focused)"); | |
1566 WTFLogAlways("%s%s\t%p%s\n", prefix, nodeName().utf8().data(), this, att
rs.toString().utf8().data()); | |
1567 } | |
1568 } | 1546 } |
1569 | 1547 |
1570 void Node::showTreeForThis() const | 1548 void Node::showTreeForThis() const |
1571 { | 1549 { |
1572 showTreeAndMark(this, "*"); | 1550 showTreeAndMark(this, "*"); |
1573 } | 1551 } |
1574 | 1552 |
1575 void Node::showTreeForThisInFlatTree() const | 1553 void Node::showTreeForThisInFlatTree() const |
1576 { | 1554 { |
1577 showTreeAndMarkInFlatTree(this, "*"); | 1555 showTreeAndMarkInFlatTree(this, "*"); |
(...skipping 851 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2429 | 2407 |
2430 void showNodePath(const blink::Node* node) | 2408 void showNodePath(const blink::Node* node) |
2431 { | 2409 { |
2432 if (node) | 2410 if (node) |
2433 node->showNodePathForThis(); | 2411 node->showNodePathForThis(); |
2434 else | 2412 else |
2435 fprintf(stderr, "Cannot showNodePath for (nil)\n"); | 2413 fprintf(stderr, "Cannot showNodePath for (nil)\n"); |
2436 } | 2414 } |
2437 | 2415 |
2438 #endif | 2416 #endif |
OLD | NEW |