Chromium HTML5 新的 Input 类型email对应c++
一、Input 类型: email
email 类型用于应该包含 e-mail 地址的输入域。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>test</title>
</head>
<body>
<form action="demo-form.php">
E-mail: <input type="email" name="usremail">
<input type="submit">
</form>
<p><b>注意:</b> Internet Explorer 9 及更早 IE 版本不支持 type="email" 。</p>
</body>
</html>
二、c++定义:
third_party\blink\renderer\core\html\forms\email_input_type.h
third_party\blink\renderer\core\html\forms\email_input_type.cc
namespace blink {
class EmailInputType final : public BaseTextInputType {
public:
explicit EmailInputType(HTMLInputElement&);
// They are public for unit testing.
CORE_EXPORT static String ConvertEmailAddressToASCII(const ScriptRegexp&,
const String&);
CORE_EXPORT static bool IsValidEmailAddress(const ScriptRegexp&,
const String&);
CORE_EXPORT static ScriptRegexp* CreateEmailRegexp(v8::Isolate* isolate);
static Vector<String> ParseMultipleValues(const String& value);
bool TypeMismatchFor(const String&) const;
private:
void CountUsage() override;
bool TypeMismatch() const override;
String TypeMismatchText() const override;
bool SupportsSelectionAPI() const override;
String SanitizeValue(const String&) const override;
String ConvertFromVisibleValue(const String&) const override;
String VisibleValue() const override;
void MultipleAttributeChanged() override;
String ConvertEmailAddressToUnicode(const String&) const;
String FindInvalidAddress(const String&) const;
};
template <>
struct DowncastTraits<EmailInputType> {
static bool AllowFrom(const InputType& type) {
return type.IsEmailInputType();
}
};
} // namespace blink