Move isEmptyValue() logic from HTMLInputElement to TextFieldInputType
authorcdumez@apple.com <cdumez@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 9 Nov 2014 05:46:59 +0000 (05:46 +0000)
committercdumez@apple.com <cdumez@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 9 Nov 2014 05:46:59 +0000 (05:46 +0000)
https://bugs.webkit.org/show_bug.cgi?id=138538

Reviewed by Darin Adler.

Move isEmptyValue() logic from HTMLInputElement to TextFieldInputType
as this only makes sense for text field input types.

No new tests, no behavior change.

* html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::isEmptyValue):
* html/InputType.cpp:
(WebCore::InputType::isEmptyValue):
* html/InputType.h:
* html/TextFieldInputType.cpp:
(WebCore::TextFieldInputType::isEmptyValue):
* html/TextFieldInputType.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@175787 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/html/HTMLInputElement.cpp
Source/WebCore/html/InputType.cpp
Source/WebCore/html/InputType.h
Source/WebCore/html/TextFieldInputType.cpp
Source/WebCore/html/TextFieldInputType.h

index 60a5912..17f7d29 100644 (file)
@@ -1,3 +1,24 @@
+2014-11-08  Chris Dumez  <cdumez@apple.com>
+
+        Move isEmptyValue() logic from HTMLInputElement to TextFieldInputType
+        https://bugs.webkit.org/show_bug.cgi?id=138538
+
+        Reviewed by Darin Adler.
+
+        Move isEmptyValue() logic from HTMLInputElement to TextFieldInputType
+        as this only makes sense for text field input types.
+
+        No new tests, no behavior change.
+
+        * html/HTMLInputElement.cpp:
+        (WebCore::HTMLInputElement::isEmptyValue):
+        * html/InputType.cpp:
+        (WebCore::InputType::isEmptyValue):
+        * html/InputType.h:
+        * html/TextFieldInputType.cpp:
+        (WebCore::TextFieldInputType::isEmptyValue):
+        * html/TextFieldInputType.h:
+
 2014-11-08  Darin Adler  <darin@apple.com>
 
         Replace FileThread class with a single function
index 549f41d..16177ba 100644 (file)
@@ -62,8 +62,6 @@
 #include "SearchInputType.h"
 #include "StyleResolver.h"
 #include "TextBreakIterator.h"
-#include "TextControlInnerElements.h"
-#include "TextNodeTraversal.h"
 #include <wtf/MathExtras.h>
 #include <wtf/Ref.h>
 
@@ -1680,17 +1678,7 @@ void HTMLInputElement::updatePlaceholderText()
 
 bool HTMLInputElement::isEmptyValue() const
 {
-    if (!isTextField())
-        return true;
-
-    TextControlInnerTextElement* innerText = innerTextElement();
-    ASSERT(innerText);
-
-    for (Text* text = TextNodeTraversal::firstWithin(innerText); text; text = TextNodeTraversal::next(text, innerText)) {
-        if (text->length())
-            return false;
-    }
-    return true;
+    return m_inputType->isEmptyValue();
 }
 
 void HTMLInputElement::parseMaxLengthAttribute(const AtomicString& value)
index acaec75..80b49fe 100644 (file)
@@ -717,6 +717,11 @@ String InputType::visibleValue() const
     return element().value();
 }
 
+bool InputType::isEmptyValue() const
+{
+    return true;
+}
+
 String InputType::sanitizeValue(const String& proposedValue) const
 {
     return proposedValue;
index 17d1253..732edec 100644 (file)
@@ -174,6 +174,7 @@ public:
     virtual bool canSetStringValue() const;
     virtual String localizeValue(const String&) const;
     virtual String visibleValue() const;
+    virtual bool isEmptyValue() const;
     // Returing the null string means "use the default value."
     // This function must be called only by HTMLInputElement::sanitizeValue().
     virtual String sanitizeValue(const String&) const;
index 8a9258e..8b2ee5a 100644 (file)
@@ -51,6 +51,7 @@
 #include "TextControlInnerElements.h"
 #include "TextEvent.h"
 #include "TextIterator.h"
+#include "TextNodeTraversal.h"
 #include "WheelEvent.h"
 
 namespace WebCore {
@@ -87,6 +88,18 @@ bool TextFieldInputType::isTextField() const
     return true;
 }
 
+bool TextFieldInputType::isEmptyValue() const
+{
+    TextControlInnerTextElement* innerText = innerTextElement();
+    ASSERT(innerText);
+
+    for (Text* text = TextNodeTraversal::firstWithin(innerText); text; text = TextNodeTraversal::next(text, innerText)) {
+        if (text->length())
+            return false;
+    }
+    return true;
+}
+
 bool TextFieldInputType::valueMissing(const String& value) const
 {
     return element().isRequired() && value.isEmpty();
index c2a8261..4f0e6f6 100644 (file)
@@ -80,6 +80,7 @@ private:
     virtual bool isKeyboardFocusable(KeyboardEvent*) const override final;
     virtual bool isMouseFocusable() const override final;
     virtual bool isTextField() const override final;
+    virtual bool isEmptyValue() const override final;
     virtual bool valueMissing(const String&) const override final;
     virtual void handleBeforeTextInsertedEvent(BeforeTextInsertedEvent*) override final;
     virtual void forwardEvent(Event*) override final;