| 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 | 5 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All |
| 6 * rights reserved. | 6 * rights reserved. |
| 7 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) | 7 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) |
| 8 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. | 8 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. |
| 9 * (http://www.torchmobile.com/) | 9 * (http://www.torchmobile.com/) |
| 10 * | 10 * |
| (...skipping 1147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1158 | 1158 |
| 1159 if (documentTypeThis->systemId() != documentTypeOther->systemId()) | 1159 if (documentTypeThis->systemId() != documentTypeOther->systemId()) |
| 1160 return false; | 1160 return false; |
| 1161 } | 1161 } |
| 1162 | 1162 |
| 1163 return true; | 1163 return true; |
| 1164 } | 1164 } |
| 1165 | 1165 |
| 1166 bool Node::isDefaultNamespace( | 1166 bool Node::isDefaultNamespace( |
| 1167 const AtomicString& namespaceURIMaybeEmpty) const { | 1167 const AtomicString& namespaceURIMaybeEmpty) const { |
| 1168 // https://dom.spec.whatwg.org/#dom-node-isdefaultnamespace |
| 1169 |
| 1170 // 1. If namespace is the empty string, then set it to null. |
| 1168 const AtomicString& namespaceURI = | 1171 const AtomicString& namespaceURI = |
| 1169 namespaceURIMaybeEmpty.isEmpty() ? nullAtom : namespaceURIMaybeEmpty; | 1172 namespaceURIMaybeEmpty.isEmpty() ? nullAtom : namespaceURIMaybeEmpty; |
| 1170 | 1173 |
| 1171 switch (getNodeType()) { | 1174 // 2. Let defaultNamespace be the result of running locate a namespace for |
| 1172 case kElementNode: { | 1175 // context object using null. |
| 1173 const Element& element = toElement(*this); | 1176 const AtomicString& defaultNamespace = lookupNamespaceURI(String()); |
| 1174 | 1177 |
| 1175 if (element.prefix().isNull()) | 1178 // 3. Return true if defaultNamespace is the same as namespace, and false |
| 1176 return element.namespaceURI() == namespaceURI; | 1179 // otherwise. |
| 1177 | 1180 return namespaceURI == defaultNamespace; |
| 1178 AttributeCollection attributes = element.attributes(); | |
| 1179 for (const Attribute& attr : attributes) { | |
| 1180 if (attr.localName() == xmlnsAtom) | |
| 1181 return attr.value() == namespaceURI; | |
| 1182 } | |
| 1183 | |
| 1184 if (Element* parent = parentElement()) | |
| 1185 return parent->isDefaultNamespace(namespaceURI); | |
| 1186 | |
| 1187 return false; | |
| 1188 } | |
| 1189 case kDocumentNode: | |
| 1190 if (Element* de = toDocument(this)->documentElement()) | |
| 1191 return de->isDefaultNamespace(namespaceURI); | |
| 1192 return false; | |
| 1193 case kDocumentTypeNode: | |
| 1194 case kDocumentFragmentNode: | |
| 1195 return false; | |
| 1196 case kAttributeNode: { | |
| 1197 const Attr* attr = toAttr(this); | |
| 1198 if (attr->ownerElement()) | |
| 1199 return attr->ownerElement()->isDefaultNamespace(namespaceURI); | |
| 1200 return false; | |
| 1201 } | |
| 1202 default: | |
| 1203 if (Element* parent = parentElement()) | |
| 1204 return parent->isDefaultNamespace(namespaceURI); | |
| 1205 return false; | |
| 1206 } | |
| 1207 } | 1181 } |
| 1208 | 1182 |
| 1209 const AtomicString& Node::lookupPrefix(const AtomicString& namespaceURI) const { | 1183 const AtomicString& Node::lookupPrefix(const AtomicString& namespaceURI) const { |
| 1210 // Implemented according to | 1184 // Implemented according to |
| 1211 // https://dom.spec.whatwg.org/#dom-node-lookupprefix | 1185 // https://dom.spec.whatwg.org/#dom-node-lookupprefix |
| 1212 | 1186 |
| 1213 if (namespaceURI.isEmpty() || namespaceURI.isNull()) | 1187 if (namespaceURI.isEmpty() || namespaceURI.isNull()) |
| 1214 return nullAtom; | 1188 return nullAtom; |
| 1215 | 1189 |
| 1216 const Element* context; | 1190 const Element* context; |
| (...skipping 1346 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2563 if (node) { | 2537 if (node) { |
| 2564 std::stringstream stream; | 2538 std::stringstream stream; |
| 2565 node->printNodePathTo(stream); | 2539 node->printNodePathTo(stream); |
| 2566 LOG(INFO) << stream.str(); | 2540 LOG(INFO) << stream.str(); |
| 2567 } else { | 2541 } else { |
| 2568 LOG(INFO) << "Cannot showNodePath for <null>"; | 2542 LOG(INFO) << "Cannot showNodePath for <null>"; |
| 2569 } | 2543 } |
| 2570 } | 2544 } |
| 2571 | 2545 |
| 2572 #endif | 2546 #endif |
| OLD | NEW |