summaryrefslogtreecommitdiff
path: root/Source/WebCore/css/CSSValueList.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/css/CSSValueList.cpp')
-rw-r--r--Source/WebCore/css/CSSValueList.cpp94
1 files changed, 37 insertions, 57 deletions
diff --git a/Source/WebCore/css/CSSValueList.cpp b/Source/WebCore/css/CSSValueList.cpp
index 4b459603b..b6f65b77a 100644
--- a/Source/WebCore/css/CSSValueList.cpp
+++ b/Source/WebCore/css/CSSValueList.cpp
@@ -21,8 +21,10 @@
#include "config.h"
#include "CSSValueList.h"
-#include "CSSParserValues.h"
-#include <wtf/PassOwnPtr.h>
+#include "CSSCustomPropertyValue.h"
+#include "CSSFunctionValue.h"
+#include "CSSPrimitiveValue.h"
+#include "DeprecatedCSSOMValue.h"
#include <wtf/text/StringBuilder.h>
namespace WebCore {
@@ -39,40 +41,31 @@ CSSValueList::CSSValueList(ValueListSeparator listSeparator)
m_valueListSeparator = listSeparator;
}
-CSSValueList::CSSValueList(CSSParserValueList& parserValues)
- : CSSValue(ValueListClass)
-{
- m_valueListSeparator = SpaceSeparator;
- m_values.reserveInitialCapacity(parserValues.size());
- for (unsigned i = 0, size = parserValues.size(); i < size; ++i)
- m_values.uncheckedAppend(parserValues.valueAt(i)->createCSSValue());
-}
-
-bool CSSValueList::removeAll(CSSValue* val)
+bool CSSValueList::removeAll(CSSValue* value)
{
- bool found = false;
- for (size_t index = 0; index < m_values.size(); index++) {
- RefPtr<CSSValue>& value = m_values.at(index);
- if (value && val && value->equals(*val)) {
- m_values.remove(index);
- found = true;
- }
- }
+ // FIXME: Why even take a pointer?
+ if (!value)
+ return false;
- return found;
+ return m_values.removeAllMatching([value](auto& current) {
+ return current->equals(*value);
+ }) > 0;
}
bool CSSValueList::hasValue(CSSValue* val) const
{
- for (size_t index = 0; index < m_values.size(); index++) {
- const RefPtr<CSSValue>& value = m_values.at(index);
- if (value && val && value->equals(*val))
+ // FIXME: Why even take a pointer?
+ if (!val)
+ return false;
+
+ for (unsigned i = 0, size = m_values.size(); i < size; ++i) {
+ if (m_values[i].get().equals(*val))
return true;
}
return false;
}
-PassRefPtr<CSSValueList> CSSValueList::copy()
+Ref<CSSValueList> CSSValueList::copy()
{
RefPtr<CSSValueList> newList;
switch (m_valueListSeparator) {
@@ -88,9 +81,9 @@ PassRefPtr<CSSValueList> CSSValueList::copy()
default:
ASSERT_NOT_REACHED();
}
- for (size_t index = 0; index < m_values.size(); index++)
- newList->append(m_values[index]);
- return newList.release();
+ for (auto& value : m_values)
+ newList->append(value.get());
+ return newList.releaseNonNull();
}
String CSSValueList::customCSSText() const
@@ -111,11 +104,10 @@ String CSSValueList::customCSSText() const
ASSERT_NOT_REACHED();
}
- unsigned size = m_values.size();
- for (unsigned i = 0; i < size; i++) {
+ for (auto& value : m_values) {
if (!result.isEmpty())
result.append(separator);
- result.append(m_values[i]->cssText());
+ result.append(value.get().cssText());
}
return result.toString();
@@ -123,7 +115,17 @@ String CSSValueList::customCSSText() const
bool CSSValueList::equals(const CSSValueList& other) const
{
- return m_valueListSeparator == other.m_valueListSeparator && compareCSSValueVector<CSSValue>(m_values, other.m_values);
+ if (m_valueListSeparator != other.m_valueListSeparator)
+ return false;
+
+ if (m_values.size() != other.m_values.size())
+ return false;
+
+ for (unsigned i = 0, size = m_values.size(); i < size; ++i) {
+ if (!m_values[i].get().equals(other.m_values[i]))
+ return false;
+ }
+ return true;
}
bool CSSValueList::equals(const CSSValue& other) const
@@ -131,38 +133,16 @@ bool CSSValueList::equals(const CSSValue& other) const
if (m_values.size() != 1)
return false;
- const RefPtr<CSSValue>& value = m_values[0];
- return value && value->equals(other);
-}
-
-void CSSValueList::addSubresourceStyleURLs(ListHashSet<URL>& urls, const StyleSheetContents* styleSheet) const
-{
- size_t size = m_values.size();
- for (size_t i = 0; i < size; ++i)
- m_values[i]->addSubresourceStyleURLs(urls, styleSheet);
+ return m_values[0].get().equals(other);
}
-bool CSSValueList::hasFailedOrCanceledSubresources() const
+bool CSSValueList::traverseSubresources(const std::function<bool (const CachedResource&)>& handler) const
{
for (unsigned i = 0; i < m_values.size(); ++i) {
- if (m_values[i]->hasFailedOrCanceledSubresources())
+ if (m_values[i].get().traverseSubresources(handler))
return true;
}
return false;
}
-CSSValueList::CSSValueList(const CSSValueList& cloneFrom)
- : CSSValue(cloneFrom.classType(), /* isCSSOMSafe */ true)
-{
- m_valueListSeparator = cloneFrom.m_valueListSeparator;
- m_values.resize(cloneFrom.m_values.size());
- for (unsigned i = 0; i < m_values.size(); ++i)
- m_values[i] = cloneFrom.m_values[i]->cloneForCSSOM();
-}
-
-PassRefPtr<CSSValueList> CSSValueList::cloneForCSSOM() const
-{
- return adoptRef(new CSSValueList(*this));
-}
-
} // namespace WebCore