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 1170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1181 Element *Node::enclosingBlockFlowElement() const | 1181 Element *Node::enclosingBlockFlowElement() const |
1182 { | 1182 { |
1183 Node *n = const_cast<Node *>(this); | 1183 Node *n = const_cast<Node *>(this); |
1184 if (isBlockFlowElement()) | 1184 if (isBlockFlowElement()) |
1185 return toElement(n); | 1185 return toElement(n); |
1186 | 1186 |
1187 while (1) { | 1187 while (1) { |
1188 n = n->parentNode(); | 1188 n = n->parentNode(); |
1189 if (!n) | 1189 if (!n) |
1190 break; | 1190 break; |
1191 if (n->isBlockFlowElement() || n->hasTagName(bodyTag)) | 1191 if (n->isBlockFlowElement() || isHTMLBodyElement(*n)) |
1192 return toElement(n); | 1192 return toElement(n); |
1193 } | 1193 } |
1194 return 0; | 1194 return 0; |
1195 } | 1195 } |
1196 | 1196 |
1197 bool Node::isRootEditableElement() const | 1197 bool Node::isRootEditableElement() const |
1198 { | 1198 { |
1199 return rendererIsEditable() && isElementNode() && (!parentNode() || !parentN
ode()->rendererIsEditable() | 1199 return rendererIsEditable() && isElementNode() && (!parentNode() || !parentN
ode()->rendererIsEditable() |
1200 || !parentNode()->isElementNode() || hasTagName(bodyTag)); | 1200 || !parentNode()->isElementNode() || isHTMLBodyElement((*this))); |
1201 } | 1201 } |
1202 | 1202 |
1203 Element* Node::rootEditableElement(EditableType editableType) const | 1203 Element* Node::rootEditableElement(EditableType editableType) const |
1204 { | 1204 { |
1205 if (editableType == HasEditableAXRole) { | 1205 if (editableType == HasEditableAXRole) { |
1206 if (AXObjectCache* cache = document().existingAXObjectCache()) | 1206 if (AXObjectCache* cache = document().existingAXObjectCache()) |
1207 return const_cast<Element*>(cache->rootAXEditableElement(this)); | 1207 return const_cast<Element*>(cache->rootAXEditableElement(this)); |
1208 } | 1208 } |
1209 | 1209 |
1210 return rootEditableElement(); | 1210 return rootEditableElement(); |
1211 } | 1211 } |
1212 | 1212 |
1213 Element* Node::rootEditableElement() const | 1213 Element* Node::rootEditableElement() const |
1214 { | 1214 { |
1215 Element* result = 0; | 1215 Element* result = 0; |
1216 for (Node* n = const_cast<Node*>(this); n && n->rendererIsEditable(); n = n-
>parentNode()) { | 1216 for (Node* n = const_cast<Node*>(this); n && n->rendererIsEditable(); n = n-
>parentNode()) { |
1217 if (n->isElementNode()) | 1217 if (n->isElementNode()) |
1218 result = toElement(n); | 1218 result = toElement(n); |
1219 if (n->hasTagName(bodyTag)) | 1219 if (isHTMLBodyElement(*n)) |
1220 break; | 1220 break; |
1221 } | 1221 } |
1222 return result; | 1222 return result; |
1223 } | 1223 } |
1224 | 1224 |
1225 bool Node::inSameContainingBlockFlowElement(Node *n) | 1225 bool Node::inSameContainingBlockFlowElement(Node *n) |
1226 { | 1226 { |
1227 return n ? enclosingBlockFlowElement() == n->enclosingBlockFlowElement() : f
alse; | 1227 return n ? enclosingBlockFlowElement() == n->enclosingBlockFlowElement() : f
alse; |
1228 } | 1228 } |
1229 | 1229 |
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1445 isNullString = false; | 1445 isNullString = false; |
1446 content.append(toCharacterData(node)->data()); | 1446 content.append(toCharacterData(node)->data()); |
1447 break; | 1447 break; |
1448 | 1448 |
1449 case Node::PROCESSING_INSTRUCTION_NODE: | 1449 case Node::PROCESSING_INSTRUCTION_NODE: |
1450 isNullString = false; | 1450 isNullString = false; |
1451 content.append(toProcessingInstruction(node)->data()); | 1451 content.append(toProcessingInstruction(node)->data()); |
1452 break; | 1452 break; |
1453 | 1453 |
1454 case Node::ELEMENT_NODE: | 1454 case Node::ELEMENT_NODE: |
1455 if (node->hasTagName(brTag) && convertBRsToNewlines) { | 1455 if (isHTMLBRElement(*node) && convertBRsToNewlines) { |
1456 isNullString = false; | 1456 isNullString = false; |
1457 content.append('\n'); | 1457 content.append('\n'); |
1458 break; | 1458 break; |
1459 } | 1459 } |
1460 // Fall through. | 1460 // Fall through. |
1461 case Node::ATTRIBUTE_NODE: | 1461 case Node::ATTRIBUTE_NODE: |
1462 case Node::DOCUMENT_FRAGMENT_NODE: | 1462 case Node::DOCUMENT_FRAGMENT_NODE: |
1463 isNullString = false; | 1463 isNullString = false; |
1464 for (Node* child = node->firstChild(); child; child = child->nextSibling
()) { | 1464 for (Node* child = node->firstChild(); child; child = child->nextSibling
()) { |
1465 if (child->nodeType() == Node::COMMENT_NODE || child->nodeType() ==
Node::PROCESSING_INSTRUCTION_NODE) | 1465 if (child->nodeType() == Node::COMMENT_NODE || child->nodeType() ==
Node::PROCESSING_INSTRUCTION_NODE) |
(...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1806 traverseTreeAndMark(indent.toString(), youngerShadowRoot, marked
Node1, markedLabel1, markedNode2, markedLabel2); | 1806 traverseTreeAndMark(indent.toString(), youngerShadowRoot, marked
Node1, markedLabel1, markedNode2, markedLabel2); |
1807 } else if (ShadowRoot* oldestShadowRoot = oldestShadowRootFor(node)) | 1807 } else if (ShadowRoot* oldestShadowRoot = oldestShadowRootFor(node)) |
1808 traverseTreeAndMark(indent.toString(), oldestShadowRoot, markedNode1
, markedLabel1, markedNode2, markedLabel2); | 1808 traverseTreeAndMark(indent.toString(), oldestShadowRoot, markedNode1
, markedLabel1, markedNode2, markedLabel2); |
1809 } | 1809 } |
1810 } | 1810 } |
1811 | 1811 |
1812 void Node::showTreeAndMark(const Node* markedNode1, const char* markedLabel1, co
nst Node* markedNode2, const char* markedLabel2) const | 1812 void Node::showTreeAndMark(const Node* markedNode1, const char* markedLabel1, co
nst Node* markedNode2, const char* markedLabel2) const |
1813 { | 1813 { |
1814 const Node* rootNode; | 1814 const Node* rootNode; |
1815 const Node* node = this; | 1815 const Node* node = this; |
1816 while (node->parentOrShadowHostNode() && !node->hasTagName(bodyTag)) | 1816 while (node->parentOrShadowHostNode() && !isHTMLBodyElement(*node)) |
1817 node = node->parentOrShadowHostNode(); | 1817 node = node->parentOrShadowHostNode(); |
1818 rootNode = node; | 1818 rootNode = node; |
1819 | 1819 |
1820 String startingIndent; | 1820 String startingIndent; |
1821 traverseTreeAndMark(startingIndent, rootNode, markedNode1, markedLabel1, mar
kedNode2, markedLabel2); | 1821 traverseTreeAndMark(startingIndent, rootNode, markedNode1, markedLabel1, mar
kedNode2, markedLabel2); |
1822 } | 1822 } |
1823 | 1823 |
1824 void Node::formatForDebugger(char* buffer, unsigned length) const | 1824 void Node::formatForDebugger(char* buffer, unsigned length) const |
1825 { | 1825 { |
1826 String result; | 1826 String result; |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1873 #endif | 1873 #endif |
1874 | 1874 |
1875 // -------- | 1875 // -------- |
1876 | 1876 |
1877 Node* Node::enclosingLinkEventParentOrSelf() | 1877 Node* Node::enclosingLinkEventParentOrSelf() |
1878 { | 1878 { |
1879 for (Node* node = this; node; node = node->parentOrShadowHostNode()) { | 1879 for (Node* node = this; node; node = node->parentOrShadowHostNode()) { |
1880 // For imagemaps, the enclosing link node is the associated area element
not the image itself. | 1880 // For imagemaps, the enclosing link node is the associated area element
not the image itself. |
1881 // So we don't let images be the enclosingLinkNode, even though isLink s
ometimes returns true | 1881 // So we don't let images be the enclosingLinkNode, even though isLink s
ometimes returns true |
1882 // for them. | 1882 // for them. |
1883 if (node->isLink() && !node->hasTagName(imgTag)) | 1883 if (node->isLink() && !isHTMLImageElement(*node)) |
1884 return node; | 1884 return node; |
1885 } | 1885 } |
1886 | 1886 |
1887 return 0; | 1887 return 0; |
1888 } | 1888 } |
1889 | 1889 |
1890 const AtomicString& Node::interfaceName() const | 1890 const AtomicString& Node::interfaceName() const |
1891 { | 1891 { |
1892 return EventTargetNames::Node; | 1892 return EventTargetNames::Node; |
1893 } | 1893 } |
(...skipping 638 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2532 node->showTreeForThis(); | 2532 node->showTreeForThis(); |
2533 } | 2533 } |
2534 | 2534 |
2535 void showNodePath(const WebCore::Node* node) | 2535 void showNodePath(const WebCore::Node* node) |
2536 { | 2536 { |
2537 if (node) | 2537 if (node) |
2538 node->showNodePathForThis(); | 2538 node->showNodePathForThis(); |
2539 } | 2539 } |
2540 | 2540 |
2541 #endif | 2541 #endif |
OLD | NEW |