18f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian// Copyright (c) 2008, Google Inc.
28f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian// All rights reserved.
38f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian//
48f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian// Redistribution and use in source and binary forms, with or without
58f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian// modification, are permitted provided that the following conditions are
68f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian// met:
78f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian//
88f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian//     * Redistributions of source code must retain the above copyright
98f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian// notice, this list of conditions and the following disclaimer.
108f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian//     * Redistributions in binary form must reproduce the above
118f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian// copyright notice, this list of conditions and the following disclaimer
128f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian// in the documentation and/or other materials provided with the
138f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian// distribution.
148f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian//     * Neither the name of Google Inc. nor the names of its
158f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian// contributors may be used to endorse or promote products derived from
168f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian// this software without specific prior written permission.
178f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian//
188f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
198f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
208f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
218f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
228f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
238f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
248f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
258f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
268f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
278f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
288f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
298f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian
308f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#include "config.h"
318f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#include "V8NamedNodesCollection.h"
328f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian
338f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#include "Element.h"
34e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block#include "NamedNodeMap.h"
358f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian
368f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qiannamespace WebCore {
378f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian
388f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng QianNode* V8NamedNodesCollection::item(unsigned index) const
398f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian{
408f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian    if (index < m_nodes.size())
418f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian        return m_nodes[index].get();
428f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian    return 0;
438f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian}
448f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian
458f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng QianNode* V8NamedNodesCollection::itemWithName(const AtomicString& id) const
468f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian{
478f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian    for (unsigned i = 0; i < m_nodes.size(); ++i) {
488f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian        Node* node = m_nodes[i].get();
49545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        if (node->hasID() && static_cast<Element*>(node)->getIdAttribute() == id)
508f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian            return node;
518f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian    }
528f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian    return 0;
538f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian}
548f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian
558f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian}  // namespace WebCore
56