void PropertySetCSSStyleDeclaration::setProperty(const String& propertyName, const String& value, const String& priority, ExceptionCode& ec) { StyleAttributeMutationScope mutationScope(this); CSSPropertyID propertyID = cssPropertyID(propertyName); if (isCustomPropertyName(propertyName)) propertyID = CSSPropertyCustom; if (!propertyID) return; if (!willMutate()) return; bool important = priority.find("important", 0, false) != notFound; ec = 0; bool changed = propertyID != CSSPropertyCustom ? m_propertySet->setProperty(propertyID, value, important, contextStyleSheet()) : m_propertySet->setCustomProperty(propertyName, value, important, contextStyleSheet()); didMutate(changed ? PropertyChanged : NoChanges); if (changed) { // CSS DOM requires raising SYNTAX_ERR of parsing failed, but this is too dangerous for compatibility, // see <http://bugs.webkit.org/show_bug.cgi?id=7296>. mutationScope.enqueueMutationRecord(); } }
ExceptionOr<void> PropertySetCSSStyleDeclaration::setProperty(const String& propertyName, const String& value, const String& priority) { StyleAttributeMutationScope mutationScope(this); CSSPropertyID propertyID = cssPropertyID(propertyName); if (isCustomPropertyName(propertyName)) propertyID = CSSPropertyCustom; if (!propertyID) return { }; if (!willMutate()) return { }; bool important = equalIgnoringASCIICase(priority, "important"); if (!important && !priority.isEmpty()) return { }; bool changed; if (propertyID == CSSPropertyCustom) changed = m_propertySet->setCustomProperty(propertyName, value, important, cssParserContext()); else changed = m_propertySet->setProperty(propertyID, value, important, cssParserContext()); didMutate(changed ? PropertyChanged : NoChanges); if (changed) { // CSS DOM requires raising SYNTAX_ERR of parsing failed, but this is too dangerous for compatibility, // see <http://bugs.webkit.org/show_bug.cgi?id=7296>. mutationScope.enqueueMutationRecord(); } return { }; }
String PropertySetCSSStyleDeclaration::getPropertyPriority(const String& propertyName) { if (isCustomPropertyName(propertyName)) return m_propertySet->customPropertyIsImportant(propertyName) ? "important" : ""; CSSPropertyID propertyID = cssPropertyID(propertyName); if (!propertyID) return String(); return m_propertySet->propertyIsImportant(propertyID) ? "important" : ""; }
String PropertySetCSSStyleDeclaration::getPropertyValue(const String& propertyName) { if (isCustomPropertyName(propertyName)) return m_propertySet->getCustomPropertyValue(propertyName); CSSPropertyID propertyID = cssPropertyID(propertyName); if (!propertyID) return String(); return m_propertySet->getPropertyValue(propertyID); }
RefPtr<CSSValue> PropertySetCSSStyleDeclaration::getPropertyCSSValue(const String& propertyName) { if (isCustomPropertyName(propertyName)) { RefPtr<CSSValue> value = m_propertySet->getCustomPropertyCSSValue(propertyName); if (!value) return nullptr; return cloneAndCacheForCSSOM(value.get()); } CSSPropertyID propertyID = cssPropertyID(propertyName); if (!propertyID) return nullptr; return cloneAndCacheForCSSOM(m_propertySet->getPropertyCSSValue(propertyID).get()); }
ExceptionOr<String> PropertySetCSSStyleDeclaration::removeProperty(const String& propertyName) { StyleAttributeMutationScope mutationScope(this); CSSPropertyID propertyID = cssPropertyID(propertyName); if (isCustomPropertyName(propertyName)) propertyID = CSSPropertyCustom; if (!propertyID) return String(); if (!willMutate()) return String(); String result; bool changed = propertyID != CSSPropertyCustom ? m_propertySet->removeProperty(propertyID, &result) : m_propertySet->removeCustomProperty(propertyName, &result); didMutate(changed ? PropertyChanged : NoChanges); if (changed) mutationScope.enqueueMutationRecord(); return WTFMove(result); }