#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
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