OSDN Git Service

Merge WebKit at r73109: Initial merge by git.
[android-x86/external-webkit.git] / WebCore / html / TextFieldInputType.cpp
index e681b40..8b74359 100644 (file)
 #include "config.h"
 #include "TextFieldInputType.h"
 
+#include "Frame.h"
+#include "HTMLInputElement.h"
+#include "KeyboardEvent.h"
+#include "RenderTextControlSingleLine.h"
+#include "TextEvent.h"
+#include <wtf/text/WTFString.h>
+
 namespace WebCore {
 
 bool TextFieldInputType::isTextField() const
@@ -38,4 +45,45 @@ bool TextFieldInputType::isTextField() const
     return true;
 }
 
+bool TextFieldInputType::valueMissing(const String& value) const
+{
+    return value.isEmpty();
+}
+
+bool TextFieldInputType::handleKeydownEvent(KeyboardEvent* event)
+{
+    if (!element()->focused())
+        return false;
+    Frame* frame = element()->document()->frame();
+    if (!frame || !frame->editor()->doTextFieldCommandFromEvent(element(), event))
+        return false;
+    event->setDefaultHandled();
+    return true;
+}
+
+bool TextFieldInputType::handleKeydownEventForSpinButton(KeyboardEvent* event)
+{
+    const String& key = event->keyIdentifier();
+    int step = 0;
+    if (key == "Up")
+        step = 1;
+    else if (key == "Down")
+        step = -1;
+    else
+        return false;
+    element()->stepUpFromRenderer(step);
+    event->setDefaultHandled();
+    return true;
+}
+
+bool TextFieldInputType::shouldSubmitImplicitly(Event* event)
+{
+    return (event->type() == eventNames().textInputEvent && event->isTextEvent() && static_cast<TextEvent*>(event)->data() == "\n") || InputType::shouldSubmitImplicitly(event);
+}
+
+RenderObject* TextFieldInputType::createRenderer(RenderArena* arena, RenderStyle*) const
+{
+    return new (arena) RenderTextControlSingleLine(element(), element()->placeholderShouldBeVisible());
+}
+
 } // namespace WebCore