| Index: Source/WebCore/html/HTMLPropertiesCollection.cpp
|
| diff --git a/Source/WebCore/html/HTMLPropertiesCollection.cpp b/Source/WebCore/html/HTMLPropertiesCollection.cpp
|
| deleted file mode 100644
|
| index dc91ed96da6026026520f4aca7239b846be96e5c..0000000000000000000000000000000000000000
|
| --- a/Source/WebCore/html/HTMLPropertiesCollection.cpp
|
| +++ /dev/null
|
| @@ -1,154 +0,0 @@
|
| -/*
|
| - * Copyright (c) 2011 Motorola Mobility, Inc. All rights reserved.
|
| - *
|
| - * Redistribution and use in source and binary forms, with or without modification,
|
| - * are permitted provided that the following conditions are met:
|
| - *
|
| - * Redistributions of source code must retain the above copyright notice,
|
| - * this list of conditions and the following disclaimer.
|
| - *
|
| - * Redistributions in binary form must reproduce the above copyright notice,
|
| - * this list of conditions and the following disclaimer in the documentation and/or
|
| - * other materials provided with the distribution.
|
| - *
|
| - * Neither the name of Motorola Mobility, Inc. nor the names of its contributors may
|
| - * be used to endorse or promote products derived from this software without
|
| - * specific prior written permission.
|
| - *
|
| - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
| - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
| - * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
| - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
|
| - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
| - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
| - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
| - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
| - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
| - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
| - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
| - */
|
| -
|
| -#include "config.h"
|
| -
|
| -#if ENABLE(MICRODATA)
|
| -
|
| -#include "HTMLPropertiesCollection.h"
|
| -
|
| -#include "DOMSettableTokenList.h"
|
| -#include "HTMLElement.h"
|
| -#include "HTMLNames.h"
|
| -#include "Node.h"
|
| -#include "NodeTraversal.h"
|
| -#include "PropertyNodeList.h"
|
| -
|
| -namespace WebCore {
|
| -
|
| -using namespace HTMLNames;
|
| -
|
| -PassRefPtr<HTMLPropertiesCollection> HTMLPropertiesCollection::create(Node* itemNode, CollectionType)
|
| -{
|
| - return adoptRef(new HTMLPropertiesCollection(itemNode));
|
| -}
|
| -
|
| -HTMLPropertiesCollection::HTMLPropertiesCollection(Node* itemNode)
|
| - : HTMLCollection(itemNode, ItemProperties, OverridesItemAfter)
|
| -{
|
| -}
|
| -
|
| -HTMLPropertiesCollection::~HTMLPropertiesCollection()
|
| -{
|
| -}
|
| -
|
| -void HTMLPropertiesCollection::updateRefElements() const
|
| -{
|
| - if (isItemRefElementsCacheValid())
|
| - return;
|
| -
|
| - m_itemRefElements.clear();
|
| - setItemRefElementsCacheValid();
|
| - toHTMLElement(ownerNode())->getItemRefElements(m_itemRefElements);
|
| -}
|
| -
|
| -static Node* nextNodeWithProperty(Node* rootNode, Node* previous, Node* ownerNode)
|
| -{
|
| - // An Microdata item may contain properties which in turn are items themselves. Properties can
|
| - // also themselves be groups of name-value pairs, by putting the itemscope attribute on the element
|
| - // that declares the property. If the property has an itemscope attribute specified then we need
|
| - // to traverse the next sibling.
|
| - return previous == ownerNode || (previous->isHTMLElement() && !toHTMLElement(previous)->fastHasAttribute(itemscopeAttr))
|
| - ? NodeTraversal::next(previous, rootNode)
|
| - : NodeTraversal::nextSkippingChildren(previous, rootNode);
|
| -}
|
| -
|
| -Element* HTMLPropertiesCollection::virtualItemAfter(unsigned& offsetInArray, Element* previousItem) const
|
| -{
|
| - while (offsetInArray < m_itemRefElements.size()) {
|
| - if (Element* next = virtualItemAfter(m_itemRefElements[offsetInArray], previousItem))
|
| - return next;
|
| - offsetInArray++;
|
| - previousItem = 0;
|
| - }
|
| - return 0;
|
| -}
|
| -
|
| -HTMLElement* HTMLPropertiesCollection::virtualItemAfter(HTMLElement* rootNode, Element* previous) const
|
| -{
|
| - Node* current;
|
| - Node* ownerNode = this->ownerNode();
|
| - current = previous ? nextNodeWithProperty(rootNode, previous, ownerNode) : rootNode;
|
| -
|
| - for (; current; current = nextNodeWithProperty(rootNode, current, ownerNode)) {
|
| - if (current == ownerNode || !current->isHTMLElement())
|
| - continue;
|
| - HTMLElement* element = toHTMLElement(current);
|
| - if (element->fastHasAttribute(itempropAttr) && element->itemProp()->length()) {
|
| - return element;
|
| - }
|
| - }
|
| -
|
| - return 0;
|
| -}
|
| -
|
| -void HTMLPropertiesCollection::updateNameCache() const
|
| -{
|
| - if (hasNameCache())
|
| - return;
|
| -
|
| - updateRefElements();
|
| -
|
| - for (unsigned i = 0; i < m_itemRefElements.size(); ++i) {
|
| - HTMLElement* refElement = m_itemRefElements[i];
|
| - for (HTMLElement* element = virtualItemAfter(refElement, 0); element; element = virtualItemAfter(refElement, element)) {
|
| - DOMSettableTokenList* itemProperty = element->itemProp();
|
| - for (unsigned propertyIndex = 0; propertyIndex < itemProperty->length(); ++propertyIndex)
|
| - updatePropertyCache(itemProperty->item(propertyIndex));
|
| - }
|
| - }
|
| -
|
| - setHasNameCache();
|
| -}
|
| -
|
| -PassRefPtr<DOMStringList> HTMLPropertiesCollection::names() const
|
| -{
|
| - updateNameCache();
|
| - if (!m_propertyNames)
|
| - m_propertyNames = DOMStringList::create();
|
| - return m_propertyNames;
|
| -}
|
| -
|
| -PassRefPtr<PropertyNodeList> HTMLPropertiesCollection::propertyNodeList(const String& name) const
|
| -{
|
| - return ownerNode()->propertyNodeList(name);
|
| -}
|
| -
|
| -bool HTMLPropertiesCollection::hasNamedItem(const AtomicString& name) const
|
| -{
|
| - updateNameCache();
|
| - if (m_propertyNames)
|
| - return m_propertyNames->contains(name);
|
| - return false;
|
| -}
|
| -
|
| -} // namespace WebCore
|
| -
|
| -#endif // ENABLE(MICRODATA)
|
|
|