1635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/** 2635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmobile.com/) 3635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * 4635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * This library is free software; you can redistribute it and/or 5635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * modify it under the terms of the GNU Library General Public 6635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * License as published by the Free Software Foundation; either 7635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * version 2 of the License, or (at your option) any later version. 8635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * 9635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * This library is distributed in the hope that it will be useful, 10635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * but WITHOUT ANY WARRANTY; without even the implied warranty of 11635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * Library General Public License for more details. 13635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * 14635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * You should have received a copy of the GNU Library General Public License 15635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * along with this library; see the file COPYING.LIB. If not, write to 16635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 17635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * Boston, MA 02110-1301, USA. 18635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * 19635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project */ 20635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 21635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#ifndef WMLInputElement_h 22635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#define WMLInputElement_h 23635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 24635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#if ENABLE(WML) 25635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#include "WMLFormControlElement.h" 26635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#include "InputElement.h" 27635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 28635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Projectnamespace WebCore { 29635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 30635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Projectclass FormDataList; 31635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 325f1ab04193ad0130ca8204aadaceae083aca9881Feng Qianclass WMLInputElement : public WMLFormControlElement, public InputElement { 33635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Projectpublic: 345ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen static PassRefPtr<WMLInputElement> create(const QualifiedName&, Document*); 355ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen 36635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project WMLInputElement(const QualifiedName& tagName, Document*); 37635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual ~WMLInputElement(); 38635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 392bde8e466a4451c7319e3a072d118917957d6554Steve Block virtual InputElement* toInputElement() { return this; } 402bde8e466a4451c7319e3a072d118917957d6554Steve Block 41635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual bool isKeyboardFocusable(KeyboardEvent*) const; 42635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual bool isMouseFocusable() const; 43635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual void dispatchFocusEvent(); 44635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual void dispatchBlurEvent(); 45635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual void updateFocusAppearance(bool restorePreviousSelection); 46635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual void aboutToUnload(); 47635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 48635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual bool shouldUseInputMethod() const { return !m_isPasswordField; } 49635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual bool isChecked() const { return false; } 508f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian virtual bool isAutofilled() const { return false; } 51635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual bool isIndeterminate() const { return false; } 525f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian virtual bool isTextFormControl() const { return true; } 53635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual bool isRadioButton() const { return false; } 54f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick virtual bool isCheckbox() const { return false; } 55635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual bool isTextField() const { return true; } 56635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual bool isSearchField() const { return false; } 57635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual bool isInputTypeHidden() const { return false; } 58635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual bool isPasswordField() const { return m_isPasswordField; } 59635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual bool searchEventsShouldBeDispatched() const { return false; } 60635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 61635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual int size() const; 625f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian virtual const AtomicString& formControlType() const; 635f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian virtual const AtomicString& formControlName() const; 648a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block virtual const String& suggestedValue() const; 65635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual String value() const; 66d0825bca7fe65beaee391d30da42e937db621564Steve Block virtual void setValue(const String&, bool sendChangeEvent = false); 67d0825bca7fe65beaee391d30da42e937db621564Steve Block virtual void setValueForUser(const String&); 682fc2651226baac27029e38c9d6ef883fa32084dbSteve Block virtual String visibleValue() const { return value(); } 6981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch virtual String convertFromVisibleValue(const String& value) const { return value; } 70635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual void setValueFromRenderer(const String&); 71635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 7281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch virtual bool wasChangedSinceLastFormControlChangeEvent() const; 7381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch virtual void setChangedSinceLastFormControlChangeEvent(bool); 7481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 755f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian virtual bool saveFormControlState(String& value) const; 765f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian virtual void restoreFormControlState(const String&); 77635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 78635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual void select(); 79635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual void accessKeyAction(bool sendToAnyElement); 80e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block virtual void parseMappedAttribute(Attribute*); 81635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 82635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual void copyNonAttributeProperties(const Element* source); 83635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 84635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual RenderObject* createRenderer(RenderArena*, RenderStyle*); 85635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual void detach(); 86635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual bool appendFormData(FormDataList&, bool); 87635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual void reset(); 88635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 89635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual void defaultEventHandler(Event*); 90635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual void cacheSelection(int start, int end); 91635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 925abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick virtual bool isAcceptableValue(const String&) const { return true; } 93231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block virtual String sanitizeValue(const String& proposedValue) const { return constrainValue(proposedValue); } 94635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 95635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual void documentDidBecomeActive(); 96635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 97635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual void willMoveToNewOwnerDocument(); 98635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual void didMoveToNewOwnerDocument(); 99635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 1008f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian bool isConformedToInputMask(const String&); 1018f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian bool isConformedToInputMask(UChar, unsigned, bool isUserInput = true); 10221939df44de1705786c545cd1bf519d47250322dBen Murdoch#if ENABLE(WCSS) 10321939df44de1705786c545cd1bf519d47250322dBen Murdoch virtual InputElementData data() const { return m_data; } 10421939df44de1705786c545cd1bf519d47250322dBen Murdoch#endif 1058f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian 106635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Projectprivate: 1075f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian friend class WMLCardElement; 1085f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian void initialize(); 1095f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 1100617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen virtual bool supportsMaxLength() const { return true; } 1118f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian String validateInputMask(const String&); 1128f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian unsigned cursorPositionToMaskIndex(unsigned); 113231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block String constrainValue(const String&) const; 1148f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian 115635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project InputElementData m_data; 116635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project bool m_isPasswordField; 1178f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian bool m_isEmptyOk; 11881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch bool m_wasChangedSinceLastChangeEvent; 1198f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian String m_formatMask; 1208f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian unsigned m_numOfCharsAllowedByMask; 121635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project}; 122635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 123635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project} 124635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 125635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#endif 126635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#endif 127