| Index: Source/core/html/HTMLTextFormControlElement.cpp
|
| diff --git a/Source/core/html/HTMLTextFormControlElement.cpp b/Source/core/html/HTMLTextFormControlElement.cpp
|
| index 03a8854b8cd7236ac39ebfb69cce901d3445bfda..546940101095dedbe77181bf7f18ebcc50264337 100644
|
| --- a/Source/core/html/HTMLTextFormControlElement.cpp
|
| +++ b/Source/core/html/HTMLTextFormControlElement.cpp
|
| @@ -63,6 +63,7 @@ HTMLTextFormControlElement::HTMLTextFormControlElement(const QualifiedName& tagN
|
| , m_cachedSelectionStart(0)
|
| , m_cachedSelectionEnd(0)
|
| , m_cachedSelectionDirection(SelectionHasNoDirection)
|
| + , m_autocapitalize(TextFieldAutocapitalize::Uninitialized)
|
| {
|
| }
|
|
|
| @@ -548,6 +549,47 @@ PassRefPtrWillBeRawPtr<Range> HTMLTextFormControlElement::selection() const
|
| return Range::create(document(), startNode, start, endNode, end);
|
| }
|
|
|
| +static const AtomicString& autocapitalizeString(TextFieldAutocapitalize autocapitalize)
|
| +{
|
| + DEFINE_STATIC_LOCAL(const AtomicString, none, ("none", AtomicString::ConstructFromLiteral));
|
| + DEFINE_STATIC_LOCAL(const AtomicString, characters, ("characters", AtomicString::ConstructFromLiteral));
|
| + DEFINE_STATIC_LOCAL(const AtomicString, words, ("words", AtomicString::ConstructFromLiteral));
|
| + DEFINE_STATIC_LOCAL(const AtomicString, sentences, ("sentences", AtomicString::ConstructFromLiteral));
|
| +
|
| + switch (autocapitalize) {
|
| + case TextFieldAutocapitalize::Uninitialized:
|
| + ASSERT_NOT_REACHED();
|
| + case TextFieldAutocapitalize::None:
|
| + return none;
|
| + case TextFieldAutocapitalize::Characters:
|
| + return characters;
|
| + case TextFieldAutocapitalize::Words:
|
| + return words;
|
| + case TextFieldAutocapitalize::Sentences:
|
| + return sentences;
|
| + }
|
| +
|
| + ASSERT_NOT_REACHED();
|
| + return none;
|
| +}
|
| +
|
| +TextFieldAutocapitalize HTMLTextFormControlElement::autocapitalizeValue() const
|
| +{
|
| + if (m_autocapitalize == TextFieldAutocapitalize::Uninitialized)
|
| + return defaultAutocapitalizeValue();
|
| + return m_autocapitalize;
|
| +}
|
| +
|
| +const AtomicString& HTMLTextFormControlElement::autocapitalize() const
|
| +{
|
| + return autocapitalizeString(autocapitalizeValue());
|
| +}
|
| +
|
| +void HTMLTextFormControlElement::setAutocapitalize(const AtomicString& autocapitalize)
|
| +{
|
| + setAttribute(autocapitalizeAttr, autocapitalize);
|
| +}
|
| +
|
| void HTMLTextFormControlElement::restoreCachedSelection()
|
| {
|
| setSelectionRange(m_cachedSelectionStart, m_cachedSelectionEnd, m_cachedSelectionDirection, NotDispatchSelectEvent);
|
| @@ -579,6 +621,17 @@ void HTMLTextFormControlElement::parseAttribute(const QualifiedName& name, const
|
| if (name == placeholderAttr) {
|
| updatePlaceholderVisibility(true);
|
| UseCounter::count(document(), UseCounter::PlaceholderAttribute);
|
| + } else if (name == autocapitalizeAttr) {
|
| + if (equalIgnoringCase(value, "off") || equalIgnoringCase(value, "none"))
|
| + m_autocapitalize = TextFieldAutocapitalize::None;
|
| + else if (equalIgnoringCase(value, "characters"))
|
| + m_autocapitalize = TextFieldAutocapitalize::Characters;
|
| + else if (equalIgnoringCase(value, "words"))
|
| + m_autocapitalize = TextFieldAutocapitalize::Words;
|
| + else if (equalIgnoringCase(value, "sentences"))
|
| + m_autocapitalize = TextFieldAutocapitalize::Sentences;
|
| + else
|
| + m_autocapitalize = TextFieldAutocapitalize::Uninitialized;
|
| } else
|
| HTMLFormControlElementWithState::parseAttribute(name, value);
|
| }
|
|
|