| 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 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2011, 2012 Apple Inc. All r
ights reserved. | 4 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2011, 2012 Apple Inc. All r
ights reserved. |
| 5 * Copyright (C) 2014 Samsung Electronics. All rights reserved. | 5 * Copyright (C) 2014 Samsung Electronics. All rights reserved. |
| 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 482 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 493 { | 493 { |
| 494 return namedItem(name); | 494 return namedItem(name); |
| 495 } | 495 } |
| 496 | 496 |
| 497 void HTMLCollection::supportedPropertyNames(Vector<String>& names) | 497 void HTMLCollection::supportedPropertyNames(Vector<String>& names) |
| 498 { | 498 { |
| 499 // As per the specification (http://dom.spec.whatwg.org/#htmlcollection): | 499 // As per the specification (http://dom.spec.whatwg.org/#htmlcollection): |
| 500 // The supported property names are the values from the list returned by the
se steps: | 500 // The supported property names are the values from the list returned by the
se steps: |
| 501 // 1. Let result be an empty list. | 501 // 1. Let result be an empty list. |
| 502 // 2. For each element represented by the collection, in tree order, run the
se substeps: | 502 // 2. For each element represented by the collection, in tree order, run the
se substeps: |
| 503 // 1. If element is in the HTML namespace and has a name attribute whose v
alue is neither the empty string | 503 // 1. If element has an ID which is neither the empty string nor is in res
ult, append element's ID to result. |
| 504 // 2. If element is in the HTML namespace and has a name attribute whose v
alue is neither the empty string |
| 504 // nor is in result, append element's name attribute value to result. | 505 // nor is in result, append element's name attribute value to result. |
| 505 // 2. If element has an ID which is neither the empty string nor is in res
ult, append element's ID to result. | |
| 506 // 3. Return result. | 506 // 3. Return result. |
| 507 HashSet<AtomicString> existingNames; | 507 HashSet<AtomicString> existingNames; |
| 508 ContainerNode& root = rootNode(); | 508 ContainerNode& root = rootNode(); |
| 509 for (Element* element = traverseToFirstElement(root); element; element = tra
verseNextElement(*element, root)) { | 509 for (Element* element = traverseToFirstElement(root); element; element = tra
verseNextElement(*element, root)) { |
| 510 if (element->isHTMLElement()) { | |
| 511 const AtomicString& nameAttribute = element->getNameAttribute(); | |
| 512 if (!nameAttribute.isEmpty()) { | |
| 513 HashSet<AtomicString>::AddResult addResult = existingNames.add(n
ameAttribute); | |
| 514 if (addResult.isNewEntry) | |
| 515 names.append(nameAttribute); | |
| 516 } | |
| 517 } | |
| 518 const AtomicString& idAttribute = element->getIdAttribute(); | 510 const AtomicString& idAttribute = element->getIdAttribute(); |
| 519 if (!idAttribute.isEmpty()) { | 511 if (!idAttribute.isEmpty()) { |
| 520 HashSet<AtomicString>::AddResult addResult = existingNames.add(idAtt
ribute); | 512 HashSet<AtomicString>::AddResult addResult = existingNames.add(idAtt
ribute); |
| 521 if (addResult.isNewEntry) | 513 if (addResult.isNewEntry) |
| 522 names.append(idAttribute); | 514 names.append(idAttribute); |
| 523 } | 515 } |
| 516 if (!element->isHTMLElement()) |
| 517 continue; |
| 518 const AtomicString& nameAttribute = element->getNameAttribute(); |
| 519 if (!nameAttribute.isEmpty()) { |
| 520 HashSet<AtomicString>::AddResult addResult = existingNames.add(nameA
ttribute); |
| 521 if (addResult.isNewEntry) |
| 522 names.append(nameAttribute); |
| 523 } |
| 524 } | 524 } |
| 525 } | 525 } |
| 526 | 526 |
| 527 void HTMLCollection::namedPropertyEnumerator(Vector<String>& names, ExceptionSta
te&) | 527 void HTMLCollection::namedPropertyEnumerator(Vector<String>& names, ExceptionSta
te&) |
| 528 { | 528 { |
| 529 supportedPropertyNames(names); | 529 supportedPropertyNames(names); |
| 530 } | 530 } |
| 531 | 531 |
| 532 void HTMLCollection::updateNameCache() const | 532 void HTMLCollection::updateNameCache() const |
| 533 { | 533 { |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 569 | 569 |
| 570 void HTMLCollection::append(NodeCacheMap& map, const AtomicString& key, Element*
element) | 570 void HTMLCollection::append(NodeCacheMap& map, const AtomicString& key, Element*
element) |
| 571 { | 571 { |
| 572 OwnPtr<Vector<Element*> >& vector = map.add(key.impl(), nullptr).iterator->v
alue; | 572 OwnPtr<Vector<Element*> >& vector = map.add(key.impl(), nullptr).iterator->v
alue; |
| 573 if (!vector) | 573 if (!vector) |
| 574 vector = adoptPtr(new Vector<Element*>); | 574 vector = adoptPtr(new Vector<Element*>); |
| 575 vector->append(element); | 575 vector->append(element); |
| 576 } | 576 } |
| 577 | 577 |
| 578 } // namespace WebCore | 578 } // namespace WebCore |
| OLD | NEW |