#include "config.h"
#include "CSSValueList.h"
#include "CSSParserValues.h"
#include "PlatformString.h"
#include <wtf/PassOwnPtr.h>
namespace WebCore {
CSSValueList::CSSValueList(bool isSpaceSeparated)
: m_isSpaceSeparated(isSpaceSeparated)
{
}
CSSValueList::CSSValueList(CSSParserValueList* list)
: m_isSpaceSeparated(true)
{
if (list) {
size_t size = list->size();
for (unsigned i = 0; i < size; ++i)
append(list->valueAt(i)->createCSSValue());
}
}
CSSValueList::~CSSValueList()
{
}
CSSValue* CSSValueList::item(unsigned index)
{
if (index >= m_values.size())
return 0;
return m_values[index].get();
}
unsigned short CSSValueList::cssValueType() const
{
return CSS_VALUE_LIST;
}
void CSSValueList::append(PassRefPtr<CSSValue> val)
{
m_values.append(val);
}
void CSSValueList::prepend(PassRefPtr<CSSValue> val)
{
m_values.prepend(val);
}
bool CSSValueList::removeAll(CSSValue* val)
{
bool found = false;
for (size_t index = 0; index < m_values.size(); index++) {
if (m_values.at(index)->cssText() == val->cssText()) {
m_values.remove(index);
found = true;
}
}
return found;
}
bool CSSValueList::hasValue(CSSValue* val)
{
for (size_t index = 0; index < m_values.size(); index++) {
if (m_values.at(index)->cssText() == val->cssText())
return true;
}
return false;
}
PassRefPtr<CSSValueList> CSSValueList::copy()
{
PassRefPtr<CSSValueList> newList = m_isSpaceSeparated ? createSpaceSeparated() : createCommaSeparated();
for (size_t index = 0; index < m_values.size(); index++)
newList->append(item(index));
return newList;
}
String CSSValueList::cssText() const
{
String result = "";
unsigned size = m_values.size();
for (unsigned i = 0; i < size; i++) {
if (!result.isEmpty()) {
if (m_isSpaceSeparated)
result += " ";
else
result += ", ";
}
result += m_values[i]->cssText();
}
return result;
}
void CSSValueList::addSubresourceStyleURLs(ListHashSet<KURL>& urls, const CSSStyleSheet* styleSheet)
{
size_t size = m_values.size();
for (size_t i = 0; i < size; ++i)
m_values[i]->addSubresourceStyleURLs(urls, styleSheet);
}
}