aboutsummaryrefslogtreecommitdiff
path: root/src/javascript/jsc/bindings/webcore/JSDOMConvertStrings.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/javascript/jsc/bindings/webcore/JSDOMConvertStrings.h')
-rw-r--r--src/javascript/jsc/bindings/webcore/JSDOMConvertStrings.h90
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