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 Apple Inc. All rights reserv
ed. | 5 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserv
ed. |
6 * | 6 * |
7 * This library is free software; you can redistribute it and/or | 7 * This library is free software; you can redistribute it and/or |
8 * modify it under the terms of the GNU Library General Public | 8 * modify it under the terms of the GNU Library General Public |
9 * License as published by the Free Software Foundation; either | 9 * License as published by the Free Software Foundation; either |
10 * version 2 of the License, or (at your option) any later version. | 10 * version 2 of the License, or (at your option) any later version. |
(...skipping 12 matching lines...) Expand all Loading... |
23 #include "config.h" | 23 #include "config.h" |
24 #include "core/dom/ContainerNode.h" | 24 #include "core/dom/ContainerNode.h" |
25 | 25 |
26 #include "HTMLNames.h" | 26 #include "HTMLNames.h" |
27 #include "core/accessibility/AXObjectCache.h" | 27 #include "core/accessibility/AXObjectCache.h" |
28 #include "core/dom/ChildListMutationScope.h" | 28 #include "core/dom/ChildListMutationScope.h" |
29 #include "core/dom/ContainerNodeAlgorithms.h" | 29 #include "core/dom/ContainerNodeAlgorithms.h" |
30 #include "core/dom/EventNames.h" | 30 #include "core/dom/EventNames.h" |
31 #include "core/dom/ExceptionCode.h" | 31 #include "core/dom/ExceptionCode.h" |
32 #include "core/dom/MutationEvent.h" | 32 #include "core/dom/MutationEvent.h" |
| 33 #include "core/dom/NodeRareData.h" |
33 #include "core/dom/NodeRenderStyle.h" | 34 #include "core/dom/NodeRenderStyle.h" |
34 #include "core/dom/NodeTraversal.h" | 35 #include "core/dom/NodeTraversal.h" |
35 #include "core/dom/TemplateContentDocumentFragment.h" | 36 #include "core/dom/TemplateContentDocumentFragment.h" |
| 37 #include "core/html/HTMLCollection.h" |
36 #include "core/html/shadow/InsertionPoint.h" | 38 #include "core/html/shadow/InsertionPoint.h" |
37 #include "core/inspector/InspectorInstrumentation.h" | 39 #include "core/inspector/InspectorInstrumentation.h" |
38 #include "core/loader/cache/MemoryCache.h" | 40 #include "core/loader/cache/MemoryCache.h" |
39 #include "core/page/Chrome.h" | 41 #include "core/page/Chrome.h" |
40 #include "core/page/ChromeClient.h" | 42 #include "core/page/ChromeClient.h" |
41 #include "core/page/Frame.h" | 43 #include "core/page/Frame.h" |
42 #include "core/page/FrameView.h" | 44 #include "core/page/FrameView.h" |
43 #include "core/page/Page.h" | 45 #include "core/page/Page.h" |
44 #include "core/platform/graphics/FloatRect.h" | 46 #include "core/platform/graphics/FloatRect.h" |
45 #include "core/rendering/InlineTextBox.h" | 47 #include "core/rendering/InlineTextBox.h" |
(...skipping 772 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
818 // note that we need to recalc the style | 820 // note that we need to recalc the style |
819 // FIXME: Move to Element | 821 // FIXME: Move to Element |
820 if (renderer()) { | 822 if (renderer()) { |
821 if (renderStyle()->affectedByHover() || (isElementNode() && toElement(th
is)->childrenAffectedByHover())) | 823 if (renderStyle()->affectedByHover() || (isElementNode() && toElement(th
is)->childrenAffectedByHover())) |
822 setNeedsStyleRecalc(); | 824 setNeedsStyleRecalc(); |
823 if (renderer() && renderer()->style()->hasAppearance()) | 825 if (renderer() && renderer()->style()->hasAppearance()) |
824 renderer()->theme()->stateChanged(renderer(), HoverState); | 826 renderer()->theme()->stateChanged(renderer(), HoverState); |
825 } | 827 } |
826 } | 828 } |
827 | 829 |
| 830 PassRefPtr<HTMLCollection> ContainerNode::children() |
| 831 { |
| 832 return ensureRareData()->ensureNodeLists()->addCacheWithAtomicName<HTMLColle
ction>(this, NodeChildren); |
| 833 } |
| 834 |
| 835 Element* ContainerNode::firstElementChild() const |
| 836 { |
| 837 return ElementTraversal::firstWithin(this); |
| 838 } |
| 839 |
| 840 Element* ContainerNode::lastElementChild() const |
| 841 { |
| 842 Node* n = lastChild(); |
| 843 while (n && !n->isElementNode()) |
| 844 n = n->previousSibling(); |
| 845 return toElement(n); |
| 846 } |
| 847 |
| 848 unsigned ContainerNode::childElementCount() const |
| 849 { |
| 850 unsigned count = 0; |
| 851 Node* n = firstChild(); |
| 852 while (n) { |
| 853 count += n->isElementNode(); |
| 854 n = n->nextSibling(); |
| 855 } |
| 856 return count; |
| 857 } |
| 858 |
828 unsigned ContainerNode::childNodeCount() const | 859 unsigned ContainerNode::childNodeCount() const |
829 { | 860 { |
830 unsigned count = 0; | 861 unsigned count = 0; |
831 Node *n; | 862 Node *n; |
832 for (n = firstChild(); n; n = n->nextSibling()) | 863 for (n = firstChild(); n; n = n->nextSibling()) |
833 count++; | 864 count++; |
834 return count; | 865 return count; |
835 } | 866 } |
836 | 867 |
837 Node *ContainerNode::childNode(unsigned index) const | 868 Node *ContainerNode::childNode(unsigned index) const |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
935 return true; | 966 return true; |
936 | 967 |
937 if (node->isElementNode() && toElement(node)->shadow()) | 968 if (node->isElementNode() && toElement(node)->shadow()) |
938 return true; | 969 return true; |
939 | 970 |
940 return false; | 971 return false; |
941 } | 972 } |
942 #endif | 973 #endif |
943 | 974 |
944 } // namespace WebCore | 975 } // namespace WebCore |
OLD | NEW |