diff options
Diffstat (limited to 'src/javascript/jsc/bindings/webcore/JSDOMConvertStrings.h')
-rw-r--r-- | src/javascript/jsc/bindings/webcore/JSDOMConvertStrings.h | 90 |
1 files changed, 81 insertions, 9 deletions
diff --git a/src/javascript/jsc/bindings/webcore/JSDOMConvertStrings.h b/src/javascript/jsc/bindings/webcore/JSDOMConvertStrings.h index 29fa7259a..450caf7e9 100644 --- a/src/javascript/jsc/bindings/webcore/JSDOMConvertStrings.h +++ b/src/javascript/jsc/bindings/webcore/JSDOMConvertStrings.h @@ -34,10 +34,12 @@ namespace WebCore { WEBCORE_EXPORT String identifierToString(JSC::JSGlobalObject&, const JSC::Identifier&); WEBCORE_EXPORT String identifierToByteString(JSC::JSGlobalObject&, const JSC::Identifier&); WEBCORE_EXPORT String valueToByteString(JSC::JSGlobalObject&, JSC::JSValue); +WEBCORE_EXPORT AtomString valueToByteAtomString(JSC::JSGlobalObject&, JSC::JSValue); WEBCORE_EXPORT String identifierToUSVString(JSC::JSGlobalObject&, const JSC::Identifier&); WEBCORE_EXPORT String valueToUSVString(JSC::JSGlobalObject&, JSC::JSValue); +WEBCORE_EXPORT AtomString valueToUSVAtomString(JSC::JSGlobalObject&, JSC::JSValue); -inline String propertyNameToString(JSC::PropertyName propertyName) +inline AtomString propertyNameToString(JSC::PropertyName propertyName) { ASSERT(!propertyName.isSymbol()); return propertyName.uid() ? propertyName.uid() : propertyName.publicName(); @@ -158,7 +160,7 @@ template<typename T> struct Converter<IDLLegacyNullToEmptyStringAdaptor<T>> : De } }; -template<typename T> struct JSConverter<IDLLegacyNullToEmptyStringAdaptor<T>> { +template<typename T> struct JSConverter<IDLLegacyNullToEmptyStringAdaptor<T>> { static constexpr bool needsState = true; static constexpr bool needsGlobalObject = false; @@ -168,6 +170,25 @@ template<typename T> struct JSConverter<IDLLegacyNullToEmptyStringAdaptor<T>> { } }; +template<typename T> struct Converter<IDLLegacyNullToEmptyAtomStringAdaptor<T>> : DefaultConverter<IDLLegacyNullToEmptyAtomStringAdaptor<T>> { + static AtomString convert(JSC::JSGlobalObject& lexicalGlobalObject, JSC::JSValue value) + { + if (value.isNull()) + return emptyAtom(); + return Converter<IDLAtomStringAdaptor<T>>::convert(lexicalGlobalObject, value); + } +}; + +template<typename T> struct JSConverter<IDLLegacyNullToEmptyAtomStringAdaptor<T>> { + static constexpr bool needsState = true; + static constexpr bool needsGlobalObject = false; + + static JSC::JSValue convert(JSC::JSGlobalObject& lexicalGlobalObject, const AtomString& value) + { + return JSConverter<T>::convert(lexicalGlobalObject, value); + } +}; + template<typename T> struct Converter<IDLAtomStringAdaptor<T>> : DefaultConverter<IDLAtomStringAdaptor<T>> { static AtomString convert(JSC::JSGlobalObject& lexicalGlobalObject, JSC::JSValue value) { @@ -177,28 +198,80 @@ template<typename T> struct Converter<IDLAtomStringAdaptor<T>> : DefaultConverte } }; -template<typename T> struct JSConverter<IDLAtomStringAdaptor<T>> { +template<> struct Converter<IDLAtomStringAdaptor<IDLUSVString>> : DefaultConverter<IDLAtomStringAdaptor<IDLUSVString>> { + static AtomString convert(JSC::JSGlobalObject& lexicalGlobalObject, JSC::JSValue value) + { + return valueToUSVAtomString(lexicalGlobalObject, value); + } +}; + +template<> struct Converter<IDLAtomStringAdaptor<IDLByteString>> : DefaultConverter<IDLAtomStringAdaptor<IDLByteString>> { + static AtomString convert(JSC::JSGlobalObject& lexicalGlobalObject, JSC::JSValue value) + { + return valueToByteAtomString(lexicalGlobalObject, value); + } +}; + +template<typename T> struct JSConverter<IDLAtomStringAdaptor<T>> { static constexpr bool needsState = true; static constexpr bool needsGlobalObject = false; static JSC::JSValue convert(JSC::JSGlobalObject& lexicalGlobalObject, const AtomString& value) { - static_assert(std::is_same<T, IDLDOMString>::value, "This adaptor is only supported for IDLDOMString at the moment."); + return JSConverter<T>::convert(lexicalGlobalObject, value); + } + static JSC::JSValue convert(JSC::JSGlobalObject& lexicalGlobalObject, const String& value) + { return JSConverter<T>::convert(lexicalGlobalObject, value); } + + static JSC::JSValue convert(JSC::JSGlobalObject& lexicalGlobalObject, const URL& value) + { + return JSConverter<T>::convert(lexicalGlobalObject, value.string()); + } +}; + +template<> struct JSConverter<IDLAtomStringAdaptor<IDLUSVString>> { + static constexpr bool needsState = true; + static constexpr bool needsGlobalObject = false; + + static JSC::JSValue convert(JSC::JSGlobalObject& lexicalGlobalObject, const AtomString& value) + { + return JSConverter<IDLUSVString>::convert(lexicalGlobalObject, value.string()); + } + + static JSC::JSValue convert(JSC::JSGlobalObject& lexicalGlobalObject, const String& value) + { + return JSConverter<IDLUSVString>::convert(lexicalGlobalObject, value); + } + + static JSC::JSValue convert(JSC::JSGlobalObject& lexicalGlobalObject, const URL& value) + { + return JSConverter<IDLUSVString>::convert(lexicalGlobalObject, value.string()); + } +}; + +template<> struct JSConverter<IDLAtomStringAdaptor<IDLByteString>> { + static constexpr bool needsState = true; + static constexpr bool needsGlobalObject = false; + + static JSC::JSValue convert(JSC::JSGlobalObject& lexicalGlobalObject, const AtomString& value) + { + return JSConverter<IDLByteString>::convert(lexicalGlobalObject, value.string()); + } }; template<typename T> struct Converter<IDLRequiresExistingAtomStringAdaptor<T>> : DefaultConverter<IDLRequiresExistingAtomStringAdaptor<T>> { static AtomString convert(JSC::JSGlobalObject& lexicalGlobalObject, JSC::JSValue value) { static_assert(std::is_same<T, IDLDOMString>::value, "This adaptor is only supported for IDLDOMString at the moment."); - - return AtomString(value.toString(&lexicalGlobalObject)->toExistingAtomString(&lexicalGlobalObject)); + + return value.toString(&lexicalGlobalObject)->toExistingAtomString(&lexicalGlobalObject); } }; -template<typename T> struct JSConverter<IDLRequiresExistingAtomStringAdaptor<T>> { +template<typename T> struct JSConverter<IDLRequiresExistingAtomStringAdaptor<T>> { static constexpr bool needsState = true; static constexpr bool needsGlobalObject = false; @@ -210,5 +283,4 @@ template<typename T> struct JSConverter<IDLRequiresExistingAtomStringAdaptor<T> } }; - -} // namespace WebCore +} // namespace WebCore
\ No newline at end of file |