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 * (C) 2006 Alexey Proskuryakov (ap@webkit.org) | 5 * (C) 2006 Alexey Proskuryakov (ap@webkit.org) |
6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2011, 2012 Apple Inc. All r
ights reserved. | 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2011, 2012 Apple Inc. All r
ights reserved. |
7 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t
orchmobile.com/) | 7 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t
orchmobile.com/) |
8 * Copyright (C) 2008, 2009, 2011, 2012 Google Inc. All rights reserved. | 8 * Copyright (C) 2008, 2009, 2011, 2012 Google Inc. All rights reserved. |
9 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) | 9 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) |
10 * Copyright (C) Research In Motion Limited 2010-2011. All rights reserved. | 10 * Copyright (C) Research In Motion Limited 2010-2011. All rights reserved. |
(...skipping 2990 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3001 // Documents may contain no more than one of each of these. | 3001 // Documents may contain no more than one of each of these. |
3002 // (One Element and one DocumentType.) | 3002 // (One Element and one DocumentType.) |
3003 for (Node* c = firstChild(); c; c = c->nextSibling()) | 3003 for (Node* c = firstChild(); c; c = c->nextSibling()) |
3004 if (c->nodeType() == type) | 3004 if (c->nodeType() == type) |
3005 return false; | 3005 return false; |
3006 return true; | 3006 return true; |
3007 } | 3007 } |
3008 return false; | 3008 return false; |
3009 } | 3009 } |
3010 | 3010 |
3011 bool Document::canReplaceChild(Node* newChild, Node* oldChild) | 3011 bool Document::canReplaceChild(Node& newChild, Node& oldChild) |
3012 { | 3012 { |
3013 if (!oldChild) | 3013 if (oldChild.nodeType() == newChild.nodeType()) |
3014 // ContainerNode::replaceChild will raise a NotFoundError. | |
3015 return true; | |
3016 | |
3017 if (oldChild->nodeType() == newChild->nodeType()) | |
3018 return true; | 3014 return true; |
3019 | 3015 |
3020 int numDoctypes = 0; | 3016 int numDoctypes = 0; |
3021 int numElements = 0; | 3017 int numElements = 0; |
3022 | 3018 |
3023 // First, check how many doctypes and elements we have, not counting | 3019 // First, check how many doctypes and elements we have, not counting |
3024 // the child we're about to remove. | 3020 // the child we're about to remove. |
3025 for (Node* c = firstChild(); c; c = c->nextSibling()) { | 3021 for (Node* c = firstChild(); c; c = c->nextSibling()) { |
3026 if (c == oldChild) | 3022 if (c == oldChild) |
3027 continue; | 3023 continue; |
3028 | 3024 |
3029 switch (c->nodeType()) { | 3025 switch (c->nodeType()) { |
3030 case DOCUMENT_TYPE_NODE: | 3026 case DOCUMENT_TYPE_NODE: |
3031 numDoctypes++; | 3027 numDoctypes++; |
3032 break; | 3028 break; |
3033 case ELEMENT_NODE: | 3029 case ELEMENT_NODE: |
3034 numElements++; | 3030 numElements++; |
3035 break; | 3031 break; |
3036 default: | 3032 default: |
3037 break; | 3033 break; |
3038 } | 3034 } |
3039 } | 3035 } |
3040 | 3036 |
3041 // Then, see how many doctypes and elements might be added by the new child. | 3037 // Then, see how many doctypes and elements might be added by the new child. |
3042 if (newChild->nodeType() == DOCUMENT_FRAGMENT_NODE) { | 3038 if (newChild.nodeType() == DOCUMENT_FRAGMENT_NODE) { |
3043 for (Node* c = newChild->firstChild(); c; c = c->nextSibling()) { | 3039 for (Node* c = newChild.firstChild(); c; c = c->nextSibling()) { |
3044 switch (c->nodeType()) { | 3040 switch (c->nodeType()) { |
3045 case ATTRIBUTE_NODE: | 3041 case ATTRIBUTE_NODE: |
3046 case CDATA_SECTION_NODE: | 3042 case CDATA_SECTION_NODE: |
3047 case DOCUMENT_FRAGMENT_NODE: | 3043 case DOCUMENT_FRAGMENT_NODE: |
3048 case DOCUMENT_NODE: | 3044 case DOCUMENT_NODE: |
3049 case ENTITY_NODE: | 3045 case ENTITY_NODE: |
3050 case NOTATION_NODE: | 3046 case NOTATION_NODE: |
3051 case TEXT_NODE: | 3047 case TEXT_NODE: |
3052 case XPATH_NAMESPACE_NODE: | 3048 case XPATH_NAMESPACE_NODE: |
3053 return false; | 3049 return false; |
3054 case COMMENT_NODE: | 3050 case COMMENT_NODE: |
3055 case PROCESSING_INSTRUCTION_NODE: | 3051 case PROCESSING_INSTRUCTION_NODE: |
3056 break; | 3052 break; |
3057 case DOCUMENT_TYPE_NODE: | 3053 case DOCUMENT_TYPE_NODE: |
3058 numDoctypes++; | 3054 numDoctypes++; |
3059 break; | 3055 break; |
3060 case ELEMENT_NODE: | 3056 case ELEMENT_NODE: |
3061 numElements++; | 3057 numElements++; |
3062 break; | 3058 break; |
3063 } | 3059 } |
3064 } | 3060 } |
3065 } else { | 3061 } else { |
3066 switch (newChild->nodeType()) { | 3062 switch (newChild.nodeType()) { |
3067 case ATTRIBUTE_NODE: | 3063 case ATTRIBUTE_NODE: |
3068 case CDATA_SECTION_NODE: | 3064 case CDATA_SECTION_NODE: |
3069 case DOCUMENT_FRAGMENT_NODE: | 3065 case DOCUMENT_FRAGMENT_NODE: |
3070 case DOCUMENT_NODE: | 3066 case DOCUMENT_NODE: |
3071 case ENTITY_NODE: | 3067 case ENTITY_NODE: |
3072 case NOTATION_NODE: | 3068 case NOTATION_NODE: |
3073 case TEXT_NODE: | 3069 case TEXT_NODE: |
3074 case XPATH_NAMESPACE_NODE: | 3070 case XPATH_NAMESPACE_NODE: |
3075 return false; | 3071 return false; |
3076 case COMMENT_NODE: | 3072 case COMMENT_NODE: |
(...skipping 2136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5213 void Document::modifiedStyleSheet(StyleSheet* sheet, RecalcStyleTime when, Style
ResolverUpdateMode updateMode) | 5209 void Document::modifiedStyleSheet(StyleSheet* sheet, RecalcStyleTime when, Style
ResolverUpdateMode updateMode) |
5214 { | 5210 { |
5215 if (!isActive()) | 5211 if (!isActive()) |
5216 return; | 5212 return; |
5217 | 5213 |
5218 styleEngine()->modifiedStyleSheet(sheet); | 5214 styleEngine()->modifiedStyleSheet(sheet); |
5219 styleResolverChanged(when, updateMode); | 5215 styleResolverChanged(when, updateMode); |
5220 } | 5216 } |
5221 | 5217 |
5222 } // namespace WebCore | 5218 } // namespace WebCore |
OLD | NEW |