Merge from Chromium at DEPS revision r205460

This commit was generated by merge_to_master.py.

Change-Id: Id50fcfa40590db3bd322348190cb5192c432eadf
diff --git a/Source/core/css/CSSFilterRule.cpp b/Source/core/css/CSSFilterRule.cpp
new file mode 100644
index 0000000..8810884
--- /dev/null
+++ b/Source/core/css/CSSFilterRule.cpp
@@ -0,0 +1,96 @@
+/*
+ * Copyright (C) 2013 Adobe Systems Incorporated. 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 THE COPYRIGHT HOLDER "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 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 "core/css/CSSFilterRule.h"
+
+#include "core/css/PropertySetCSSStyleDeclaration.h"
+#include "core/css/StylePropertySet.h"
+#include "core/css/StyleRule.h"
+#include "core/dom/WebCoreMemoryInstrumentation.h"
+#include "wtf/text/StringBuilder.h"
+
+namespace WebCore {
+
+CSSFilterRule::CSSFilterRule(StyleRuleFilter* filterRule, CSSStyleSheet* parent)
+    : CSSRule(parent)
+    , m_filterRule(filterRule)
+{
+}
+
+CSSFilterRule::~CSSFilterRule()
+{
+    if (m_propertiesCSSOMWrapper)
+        m_propertiesCSSOMWrapper->clearParentRule();
+}
+
+CSSStyleDeclaration* CSSFilterRule::style() const
+{
+    if (!m_propertiesCSSOMWrapper)
+        m_propertiesCSSOMWrapper = StyleRuleCSSStyleDeclaration::create(m_filterRule->mutableProperties(), const_cast<CSSFilterRule*>(this));
+    return m_propertiesCSSOMWrapper.get();
+}
+
+String CSSFilterRule::cssText() const
+{
+    StringBuilder result;
+    result.appendLiteral("@-webkit-filter ");
+
+    String filterName = m_filterRule->filterName();
+    result.append(filterName);
+    result.appendLiteral(" { ");
+
+    String descs = m_filterRule->properties()->asText();
+    result.append(descs);
+    if (!descs.isEmpty())
+        result.append(' ');
+    result.append('}');
+
+    return result.toString();
+}
+
+void CSSFilterRule::reattach(StyleRuleBase* rule)
+{
+    ASSERT(rule);
+    ASSERT_WITH_SECURITY_IMPLICATION(rule->isFilterRule());
+    m_filterRule = static_cast<StyleRuleFilter*>(rule);
+    if (m_propertiesCSSOMWrapper)
+        m_propertiesCSSOMWrapper->reattach(m_filterRule->mutableProperties());
+}
+
+void CSSFilterRule::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
+{
+    MemoryClassInfo info(memoryObjectInfo, this, WebCoreMemoryTypes::CSS);
+    CSSRule::reportMemoryUsage(memoryObjectInfo);
+    info.addMember(m_filterRule);
+    info.addMember(m_propertiesCSSOMWrapper);
+}
+
+} // namespace WebCore
+