embedderCustomElementNames().append(lower);
}
+static inline bool isValidNCName(const AtomicString& name)
+{
+ if (kNotFound != name.find(':'))
+ return false;
+
+ if (!name.string().is8Bit()) {
+ const UChar32 c = name.characters16()[0];
+ // These characters comes under CombiningChar in NCName and according to
+ // NCName only BaseChar and Ideodgraphic can come as first chars.
+ // Also these characters come under Letter_Other in UnicodeData, thats
+ // why they pass as valid document name.
+ if (c == 0x0B83 || c == 0x0F88 || c == 0x0F89 || c == 0x0F8A || c == 0x0F8B)
+ return false;
+ }
+
+ return Document::isValidName(name.string());
+}
+
bool CustomElement::isValidName(const AtomicString& name, NameSet validNames)
{
if ((validNames & EmbedderNames) && kNotFound != embedderCustomElementNames().find(name))
if ((validNames & StandardNames) && kNotFound != name.find('-')) {
DEFINE_STATIC_LOCAL(Vector<AtomicString>, reservedNames, ());
if (reservedNames.isEmpty()) {
+ // FIXME(crbug.com/426605): We should be able to remove this.
reservedNames.append(MathMLNames::annotation_xmlTag.localName());
-#if ENABLE(SVG_FONTS)
- reservedNames.append(SVGNames::font_faceTag.localName());
- reservedNames.append(SVGNames::font_face_srcTag.localName());
- reservedNames.append(SVGNames::font_face_uriTag.localName());
- reservedNames.append(SVGNames::font_face_formatTag.localName());
- reservedNames.append(SVGNames::font_face_nameTag.localName());
- reservedNames.append(SVGNames::missing_glyphTag.localName());
-#endif
}
if (kNotFound == reservedNames.find(name))
- return Document::isValidName(name.string());
+ return isValidNCName(name);
}
return false;