summaryrefslogtreecommitdiffstats
path: root/WebCore/dom/DatasetDOMStringMap.cpp
diff options
context:
space:
mode:
authorSteve Block <steveblock@google.com>2011-05-06 11:45:16 +0100
committerSteve Block <steveblock@google.com>2011-05-12 13:44:10 +0100
commitcad810f21b803229eb11403f9209855525a25d57 (patch)
tree29a6fd0279be608e0fe9ffe9841f722f0f4e4269 /WebCore/dom/DatasetDOMStringMap.cpp
parent121b0cf4517156d0ac5111caf9830c51b69bae8f (diff)
downloadexternal_webkit-cad810f21b803229eb11403f9209855525a25d57.zip
external_webkit-cad810f21b803229eb11403f9209855525a25d57.tar.gz
external_webkit-cad810f21b803229eb11403f9209855525a25d57.tar.bz2
Merge WebKit at r75315: Initial merge by git.
Change-Id: I570314b346ce101c935ed22a626b48c2af266b84
Diffstat (limited to 'WebCore/dom/DatasetDOMStringMap.cpp')
-rw-r--r--WebCore/dom/DatasetDOMStringMap.cpp192
1 files changed, 0 insertions, 192 deletions
diff --git a/WebCore/dom/DatasetDOMStringMap.cpp b/WebCore/dom/DatasetDOMStringMap.cpp
deleted file mode 100644
index 6359d55..0000000
--- a/WebCore/dom/DatasetDOMStringMap.cpp
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
- * Copyright (C) 2010 Apple 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:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. 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.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS 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 APPLE INC. OR ITS 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"
-#include "DatasetDOMStringMap.h"
-
-#include "Attribute.h"
-#include "Element.h"
-#include "ExceptionCode.h"
-#include "NamedNodeMap.h"
-#include <wtf/ASCIICType.h>
-
-namespace WebCore {
-
-static bool isValidAttributeName(const String& name)
-{
- if (!name.startsWith("data-"))
- return false;
-
- const UChar* characters = name.characters();
- unsigned length = name.length();
- for (unsigned i = 5; i < length; ++i) {
- if (isASCIIUpper(characters[i]))
- return false;
- }
-
- return true;
-}
-
-static String convertAttributeNameToPropertyName(const String& name)
-{
- Vector<UChar> newStringBuffer;
-
- const UChar* characters = name.characters();
- unsigned length = name.length();
- for (unsigned i = 5; i < length; ++i) {
- if (characters[i] != '-')
- newStringBuffer.append(characters[i]);
- else {
- if ((i + 1 < length) && isASCIILower(characters[i + 1])) {
- newStringBuffer.append(toASCIIUpper(characters[i + 1]));
- ++i;
- } else
- newStringBuffer.append(characters[i]);
- }
- }
-
- return String::adopt(newStringBuffer);
-}
-
-static bool propertyNameMatchesAttributeName(const String& propertyName, const String& attributeName)
-{
- // FIXME: This should be able to match without creating a new string.
-
- if (!isValidAttributeName(attributeName))
- return false;
-
- String convertedName = convertAttributeNameToPropertyName(attributeName);
- return (convertedName == propertyName);
-}
-
-static bool isValidPropertyName(const String& name)
-{
- const UChar* characters = name.characters();
- unsigned length = name.length();
- for (unsigned i = 0; i < length; ++i) {
- if (characters[i] == '-' && (i + 1 < length) && isASCIILower(characters[i + 1]))
- return false;
- }
- return true;
-}
-
-static String convertPropertyNameToAttributeName(const String& name)
-{
- Vector<UChar> newStringBuffer;
-
- newStringBuffer.append('d');
- newStringBuffer.append('a');
- newStringBuffer.append('t');
- newStringBuffer.append('a');
- newStringBuffer.append('-');
-
- const UChar* characters = name.characters();
- unsigned length = name.length();
- for (unsigned i = 0; i < length; ++i) {
- if (isASCIIUpper(characters[i])) {
- newStringBuffer.append('-');
- newStringBuffer.append(toASCIILower(characters[i]));
- } else
- newStringBuffer.append(characters[i]);
- }
-
- return String::adopt(newStringBuffer);
-}
-
-
-void DatasetDOMStringMap::ref()
-{
- m_element->ref();
-}
-
-void DatasetDOMStringMap::deref()
-{
- m_element->deref();
-}
-
-void DatasetDOMStringMap::getNames(Vector<String>& names)
-{
- NamedNodeMap* attributeMap = m_element->attributes(true);
- if (attributeMap) {
- unsigned length = attributeMap->length();
- for (unsigned i = 0; i < length; i++) {
- Attribute* attribute = attributeMap->attributeItem(i);
- if (isValidAttributeName(attribute->localName()))
- names.append(convertAttributeNameToPropertyName(attribute->localName()));
- }
- }
-}
-
-String DatasetDOMStringMap::item(const String& name)
-{
- NamedNodeMap* attributeMap = m_element->attributes(true);
- if (attributeMap) {
- unsigned length = attributeMap->length();
- for (unsigned i = 0; i < length; i++) {
- Attribute* attribute = attributeMap->attributeItem(i);
- if (propertyNameMatchesAttributeName(name, attribute->localName()))
- return attribute->value();
- }
- }
-
- return String();
-}
-
-bool DatasetDOMStringMap::contains(const String& name)
-{
- NamedNodeMap* attributeMap = m_element->attributes(true);
- if (attributeMap) {
- unsigned length = attributeMap->length();
- for (unsigned i = 0; i < length; i++) {
- Attribute* attribute = attributeMap->attributeItem(i);
- if (propertyNameMatchesAttributeName(name, attribute->localName()))
- return true;
- }
- }
- return false;
-}
-
-void DatasetDOMStringMap::setItem(const String& name, const String& value, ExceptionCode& ec)
-{
- if (!isValidPropertyName(name)) {
- ec = SYNTAX_ERR;
- return;
- }
-
- m_element->setAttribute(convertPropertyNameToAttributeName(name), value, ec);
-}
-
-void DatasetDOMStringMap::deleteItem(const String& name, ExceptionCode& ec)
-{
- if (!isValidPropertyName(name)) {
- ec = SYNTAX_ERR;
- return;
- }
-
- ExceptionCode dummy;
- m_element->removeAttribute(convertPropertyNameToAttributeName(name), dummy);
-}
-
-} // namespace WebCore