/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "mozilla/dom/CSSKeywordValue.h" #include "mozilla/AlreadyAddRefed.h" #include "mozilla/ErrorResult.h" #include "mozilla/RefPtr.h" #include "mozilla/ServoStyleConsts.h" #include "mozilla/dom/BindingDeclarations.h" #include "mozilla/dom/CSSKeywordValueBinding.h" namespace mozilla::dom { CSSKeywordValue::CSSKeywordValue(nsCOMPtr aParent, const nsACString& aValue) : CSSStyleValue(std::move(aParent), StyleValueType::KeywordValue), mValue(aValue) {} // static RefPtr CSSKeywordValue::Create( nsCOMPtr aParent, const StyleKeywordValue& aKeywordValue) { return MakeRefPtr(std::move(aParent), aKeywordValue._0); } JSObject* CSSKeywordValue::WrapObject(JSContext* aCx, JS::Handle aGivenProto) { return CSSKeywordValue_Binding::Wrap(aCx, this, aGivenProto); } // start of CSSKeywordValue Web IDL implementation // https://drafts.css-houdini.org/css-typed-om-1/#dom-csskeywordvalue-csskeywordvalue // // static already_AddRefed CSSKeywordValue::Constructor( const GlobalObject& aGlobal, const nsACString& aValue, ErrorResult& aRv) { // Step 1. if (aValue.IsEmpty()) { aRv.ThrowTypeError("CSSKeywordValue does not support empty strings"); return nullptr; } // Step 2. return MakeAndAddRef(aGlobal.GetAsSupports(), aValue); } void CSSKeywordValue::GetValue(nsCString& aRetVal) const { aRetVal = mValue; } // https://drafts.css-houdini.org/css-typed-om-1/#dom-csskeywordvalue-value void CSSKeywordValue::SetValue(const nsACString& aArg, ErrorResult& aRv) { // Step 1. if (aArg.IsEmpty()) { aRv.ThrowTypeError("CSSKeywordValue does not support empty strings"); return; } // Step 2. mValue = aArg; } // end of CSSKeywordValue Web IDL implementation void CSSKeywordValue::ToCssTextWithProperty(const CSSPropertyId& aPropertyId, nsACString& aDest) const { aDest.Append(mValue); } const CSSKeywordValue& CSSStyleValue::GetAsCSSKeywordValue() const { MOZ_DIAGNOSTIC_ASSERT(mStyleValueType == StyleValueType::KeywordValue); return *static_cast(this); } CSSKeywordValue& CSSStyleValue::GetAsCSSKeywordValue() { MOZ_DIAGNOSTIC_ASSERT(mStyleValueType == StyleValueType::KeywordValue); return *static_cast(this); } } // namespace mozilla::dom