18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (C) 1999 Antti Koivisto (koivisto@kde.org) 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (C) 2000 Dirk Mueller (mueller@kde.org) 55af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke * Copyright (C) 2004, 2005, 2006, 2007, 2010 Apple Inc. All rights reserved. 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is free software; you can redistribute it and/or 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modify it under the terms of the GNU Library General Public 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * License as published by the Free Software Foundation; either 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * version 2 of the License, or (at your option) any later version. 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is distributed in the hope that it will be useful, 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * but WITHOUT ANY WARRANTY; without even the implied warranty of 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Library General Public License for more details. 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * You should have received a copy of the GNU Library General Public License 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * along with this library; see the file COPYING.LIB. If not, write to 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Boston, MA 02110-1301, USA. 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef HTMLInputElement_h 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define HTMLInputElement_h 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "HTMLFormControlElement.h" 28635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#include "InputElement.h" 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore { 318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass FileList; 33231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockclass HTMLDataListElement; 34231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockclass HTMLOptionElement; 35bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsenclass InputType; 368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass KURL; 378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 38231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockclass HTMLInputElement : public HTMLTextFormControlElement, public InputElement { 398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectpublic: 402fc2651226baac27029e38c9d6ef883fa32084dbSteve Block static PassRefPtr<HTMLInputElement> create(const QualifiedName&, Document*, HTMLFormElement*, bool createdByParser); 418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual ~HTMLInputElement(); 428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 43a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch DEFINE_ATTRIBUTE_EVENT_LISTENER(webkitspeechchange); 44a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 452bde8e466a4451c7319e3a072d118917957d6554Steve Block virtual InputElement* toInputElement() { return this; } 462bde8e466a4451c7319e3a072d118917957d6554Steve Block 478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool autoComplete() const; 488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 49231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block // For ValidityState 50a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch bool typeMismatch() const; 515ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen // valueMissing() ignores the specified string value for CHECKBOX and RADIO. 525ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen bool valueMissing(const String&) const; 535ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen bool patternMismatch(const String&) const; 545ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen bool tooLong(const String&, NeedsToCheckDirtyFlag) const; 555ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen bool rangeUnderflow(const String&) const; 565ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen bool rangeOverflow(const String&) const; 57d0825bca7fe65beaee391d30da42e937db621564Steve Block // Returns the minimum value for type=date, number, or range. Don't call this for other types. 58643ca7872b450ea4efacab6188849e5aac2ba161Steve Block double minimum() const; 59d0825bca7fe65beaee391d30da42e937db621564Steve Block // Returns the maximum value for type=date, number, or range. Don't call this for other types. 60643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // This always returns a value which is >= minimum(). 61643ca7872b450ea4efacab6188849e5aac2ba161Steve Block double maximum() const; 62643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Sets the "allowed value step" defined in the HTML spec to the specified double pointer. 63643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Returns false if there is no "allowed value step." 64643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool getAllowedValueStep(double*) const; 656b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner bool getAllowedValueStepWithDecimalPlaces(double*, unsigned*) const; 66643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // For ValidityState. 675ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen bool stepMismatch(const String&) const; 686b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner String minimumString() const; 696b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner String maximumString() const; 706b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner String stepBaseString() const; 716b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner String stepString() const; 726b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner String typeMismatchText() const; 734576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang String valueMissingText() const; 745ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen 75643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Implementations of HTMLInputElement::stepUp() and stepDown(). 76643ca7872b450ea4efacab6188849e5aac2ba161Steve Block void stepUp(int, ExceptionCode&); 77643ca7872b450ea4efacab6188849e5aac2ba161Steve Block void stepDown(int, ExceptionCode&); 78643ca7872b450ea4efacab6188849e5aac2ba161Steve Block void stepUp(ExceptionCode& ec) { stepUp(1, ec); } 79643ca7872b450ea4efacab6188849e5aac2ba161Steve Block void stepDown(ExceptionCode& ec) { stepDown(1, ec); } 8021939df44de1705786c545cd1bf519d47250322dBen Murdoch // stepUp()/stepDown() for user-interaction. 8121939df44de1705786c545cd1bf519d47250322dBen Murdoch void stepUpFromRenderer(int); 820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 83cad810f21b803229eb11403f9209855525a25d57Steve Block bool isTextButton() const; 8468513a70bcd92384395513322f1b801e7bf9c729Steve Block 85cad810f21b803229eb11403f9209855525a25d57Steve Block virtual bool isRadioButton() const; 86643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual bool isTextField() const; 87cad810f21b803229eb11403f9209855525a25d57Steve Block virtual bool isSearchField() const; 88cad810f21b803229eb11403f9209855525a25d57Steve Block virtual bool isInputTypeHidden() const; 89cad810f21b803229eb11403f9209855525a25d57Steve Block virtual bool isPasswordField() const; 90cad810f21b803229eb11403f9209855525a25d57Steve Block virtual bool isCheckbox() const; 9168513a70bcd92384395513322f1b801e7bf9c729Steve Block 9268513a70bcd92384395513322f1b801e7bf9c729Steve Block // FIXME: It's highly likely that any call site calling this function should instead 9368513a70bcd92384395513322f1b801e7bf9c729Steve Block // be using a different one. Many input elements behave like text fields, and in addition 9468513a70bcd92384395513322f1b801e7bf9c729Steve Block // any unknown input type is treated as text. Consider, for example, isTextField or 9568513a70bcd92384395513322f1b801e7bf9c729Steve Block // isTextField && !isPasswordField. 96cad810f21b803229eb11403f9209855525a25d57Steve Block bool isText() const; 9768513a70bcd92384395513322f1b801e7bf9c729Steve Block 98cad810f21b803229eb11403f9209855525a25d57Steve Block bool isEmailField() const; 99cad810f21b803229eb11403f9209855525a25d57Steve Block bool isFileUpload() const; 100cad810f21b803229eb11403f9209855525a25d57Steve Block bool isImageButton() const; 101cad810f21b803229eb11403f9209855525a25d57Steve Block bool isNumberField() const; 102cad810f21b803229eb11403f9209855525a25d57Steve Block bool isSubmitButton() const; 103cad810f21b803229eb11403f9209855525a25d57Steve Block bool isTelephoneField() const; 104cad810f21b803229eb11403f9209855525a25d57Steve Block bool isURLField() const; 10568513a70bcd92384395513322f1b801e7bf9c729Steve Block 10606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#if ENABLE(INPUT_SPEECH) 10706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen virtual bool isSpeechEnabled() const; 108a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#endif 1098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 110cad810f21b803229eb11403f9209855525a25d57Steve Block bool checked() const { return m_isChecked; } 1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void setChecked(bool, bool sendChangeEvent = false); 112dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 113dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // 'indeterminate' is a state independent of the checked state that causes the control to draw in a way that hides the actual state. 114cad810f21b803229eb11403f9209855525a25d57Steve Block bool indeterminate() const { return m_isIndeterminate; } 1158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void setIndeterminate(bool); 116dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 117635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual int size() const; 1188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1195af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke void setType(const String&); 120d0825bca7fe65beaee391d30da42e937db621564Steve Block 121635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual String value() const; 122643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void setValue(const String&, bool sendChangeEvent = false); 123643ca7872b450ea4efacab6188849e5aac2ba161Steve Block virtual void setValueForUser(const String&); 1245ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen // Checks if the specified string would be a valid value. 1255ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen // We should not call this for types with no string value such as CHECKBOX and RADIO. 1265ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen bool isValidValue(const String&) const; 127635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 128e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke virtual const String& suggestedValue() const; 129e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke void setSuggestedValue(const String&); 130e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke 131d0825bca7fe65beaee391d30da42e937db621564Steve Block double valueAsDate() const; 132d0825bca7fe65beaee391d30da42e937db621564Steve Block void setValueAsDate(double, ExceptionCode&); 133d0825bca7fe65beaee391d30da42e937db621564Steve Block 134d0825bca7fe65beaee391d30da42e937db621564Steve Block double valueAsNumber() const; 135d0825bca7fe65beaee391d30da42e937db621564Steve Block void setValueAsNumber(double, ExceptionCode&); 136d0825bca7fe65beaee391d30da42e937db621564Steve Block 1375f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian virtual String placeholder() const; 1385f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian virtual void setPlaceholder(const String&); 1395f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 1408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project String valueWithDefault() const; 1418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 142635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual void setValueFromRenderer(const String&); 1438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void setFileListFromRenderer(const Vector<String>&); 1448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool canHaveSelection() const; 146231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block virtual void select() { HTMLTextFormControlElement::select(); } 1478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual bool rendererIsNeeded(RenderStyle*); 1498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual RenderObject* createRenderer(RenderArena*, RenderStyle*); 1508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void detach(); 1518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1525af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke // FIXME: For isActivatedSubmit and setActivatedSubmit, we should use the NVI-idiom here by making 1535af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke // it private virtual in all classes and expose a public method in HTMLFormControlElement to call 1545af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke // the private virtual method. 1558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual bool isActivatedSubmit() const; 1568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void setActivatedSubmit(bool flag); 1578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project String altText() const; 1598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int maxResults() const { return m_maxResults; } 1618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project String defaultValue() const; 1638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void setDefaultValue(const String&); 1648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 165635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project void setDefaultName(const AtomicString&); 166635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 1678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project String accept() const; 1688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project String alt() const; 1698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void setSize(unsigned); 1718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project KURL src() const; 1738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1746b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner virtual int maxLength() const; 175231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block void setMaxLength(int, ExceptionCode&); 1768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1778f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian bool multiple() const; 1788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 179cad810f21b803229eb11403f9209855525a25d57Steve Block virtual bool isAutofilled() const { return m_isAutofilled; } 180cad810f21b803229eb11403f9209855525a25d57Steve Block void setAutofilled(bool = true); 1818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project FileList* files(); 1838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void addSearchResult(); 1858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void onSearch(); 186635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 1875af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke#if ENABLE(DATALIST) 1885af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke HTMLElement* list() const; 1895af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke HTMLOptionElement* selectedOption() const; 19021939df44de1705786c545cd1bf519d47250322dBen Murdoch#endif 1915af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke 19206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#if ENABLE(WCSS) 19306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen void setWapInputFormat(String& mask); 19406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#endif 19506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen 196cad810f21b803229eb11403f9209855525a25d57Steve Block // These functions are public so they can be used in InputType classes. 197cad810f21b803229eb11403f9209855525a25d57Steve Block // Otherwise, they would be private. 198cad810f21b803229eb11403f9209855525a25d57Steve Block CheckedRadioButtons& checkedRadioButtons() const; 199cad810f21b803229eb11403f9209855525a25d57Steve Block void handleBeforeTextInsertedEvent(Event*); 200cad810f21b803229eb11403f9209855525a25d57Steve Block void updateCheckedRadioButtons(); 20181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 2022bde8e466a4451c7319e3a072d118917957d6554Steve Block bool lastChangeWasUserEdit() const; 2032bde8e466a4451c7319e3a072d118917957d6554Steve Block 2048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectprotected: 2052fc2651226baac27029e38c9d6ef883fa32084dbSteve Block HTMLInputElement(const QualifiedName&, Document*, HTMLFormElement*, bool createdByParser); 2065af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke 20721939df44de1705786c545cd1bf519d47250322dBen Murdoch virtual void defaultEventHandler(Event*); 2088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectprivate: 2105af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke enum AutoCompleteSetting { Uninitialized, On, Off }; 2115af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke 2125af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke virtual void willMoveToNewOwnerDocument(); 2135af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke virtual void didMoveToNewOwnerDocument(); 2145af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke 2155af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke virtual bool isKeyboardFocusable(KeyboardEvent*) const; 2165af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke virtual bool isMouseFocusable() const; 217cad810f21b803229eb11403f9209855525a25d57Steve Block virtual bool isEnumeratable() const; 2185af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke virtual void updateFocusAppearance(bool restorePreviousSelection); 2195af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke virtual void aboutToUnload(); 2205af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke virtual bool shouldUseInputMethod() const; 2215af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke 2225af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke virtual const AtomicString& formControlName() const; 22381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 2245af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke // isChecked is used by the rendering tree/CSS while checked() is used by JS to determine checked state 225cad810f21b803229eb11403f9209855525a25d57Steve Block virtual bool isChecked() const; 2265af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke virtual bool isIndeterminate() const { return indeterminate(); } 22781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 2285af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke virtual bool isTextFormControl() const { return isTextField(); } 2295af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke 230cad810f21b803229eb11403f9209855525a25d57Steve Block virtual bool hasSpinButton() const; 2315af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke virtual bool canTriggerImplicitSubmission() const { return isTextField(); } 2325af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke 2335af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke virtual const AtomicString& formControlType() const; 2345af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke 2355af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke virtual bool searchEventsShouldBeDispatched() const; 2365af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke 2375af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke virtual bool saveFormControlState(String& value) const; 2385af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke virtual void restoreFormControlState(const String&); 2395af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke 2405af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke virtual bool canStartSelection() const; 24181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 2425af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke virtual void accessKeyAction(bool sendToAnyElement); 2435af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke 2445af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke virtual bool mapToEntry(const QualifiedName& attrName, MappedAttributeEntry& result) const; 2455af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke virtual void parseMappedAttribute(Attribute*); 2462fc2651226baac27029e38c9d6ef883fa32084dbSteve Block virtual void finishParsingChildren(); 2475af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke 2485af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke virtual void copyNonAttributeProperties(const Element* source); 2495af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke 2505af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke virtual void attach(); 2515af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke 2525af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke virtual bool appendFormData(FormDataList&, bool); 2535af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke 2545af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke virtual bool isSuccessfulSubmitButton() const; 2555af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke 2565af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke virtual void reset(); 2575af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke 2585af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke virtual void* preDispatchEventHandler(Event*); 2595af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke virtual void postDispatchEventHandler(Event*, void* dataFromPreDispatch); 2605af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke 2615af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke virtual bool isURLAttribute(Attribute*) const; 2625af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke 2635af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke virtual void cacheSelection(int start, int end); 2645af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke 2652fc2651226baac27029e38c9d6ef883fa32084dbSteve Block virtual String visibleValue() const; 26681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch virtual String convertFromVisibleValue(const String&) const; 2675abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick virtual bool isAcceptableValue(const String&) const; 2685af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke virtual String sanitizeValue(const String&) const; 2695abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick virtual bool hasUnacceptableValue() const; 2705af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke 271cad810f21b803229eb11403f9209855525a25d57Steve Block virtual bool isInRange() const; 272cad810f21b803229eb11403f9209855525a25d57Steve Block virtual bool isOutOfRange() const; 273cad810f21b803229eb11403f9209855525a25d57Steve Block 2745af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke virtual void documentDidBecomeActive(); 2755af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke 2765af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke virtual void addSubresourceAttributeURLs(ListHashSet<KURL>&) const; 2775af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke 2788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool needsActivationCallback(); 2798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void registerForActivationCallbackIfNeeded(); 2808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void unregisterForActivationCallbackIfNeeded(); 2818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2820617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen virtual bool supportsMaxLength() const { return isTextType(); } 2830617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen bool isTextType() const; 2840617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen 285cad810f21b803229eb11403f9209855525a25d57Steve Block virtual bool supportsPlaceholder() const; 286231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block virtual bool isEmptyValue() const { return value().isEmpty(); } 28781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch virtual bool isEmptySuggestedValue() const { return suggestedValue().isEmpty(); } 288231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block virtual void handleFocusEvent(); 289231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block virtual void handleBlurEvent(); 290231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block virtual int cachedSelectionStart() const { return m_data.cachedSelectionStart(); } 291231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block virtual int cachedSelectionEnd() const { return m_data.cachedSelectionEnd(); } 292231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 2930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch virtual bool isOptionalFormControl() const { return !isRequiredFormControl(); } 2940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch virtual bool isRequiredFormControl() const; 295dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual bool recalcWillValidate() const; 2960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 29768513a70bcd92384395513322f1b801e7bf9c729Steve Block void updateType(); 29868513a70bcd92384395513322f1b801e7bf9c729Steve Block 2998a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block // Helper for stepUp()/stepDown(). Adds step value * count to the current value. 3008a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block void applyStep(double count, ExceptionCode&); 3018a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block 302231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#if ENABLE(DATALIST) 303231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block HTMLDataListElement* dataList() const; 304231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#endif 305231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 3065af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke#if ENABLE(WCSS) 3075af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke virtual InputElementData data() const { return m_data; } 3085af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke#endif 3095af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke 310635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project InputElementData m_data; 3118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project short m_maxResults; 312cad810f21b803229eb11403f9209855525a25d57Steve Block bool m_isChecked : 1; 313cad810f21b803229eb11403f9209855525a25d57Steve Block bool m_reflectsCheckedAttribute : 1; 314cad810f21b803229eb11403f9209855525a25d57Steve Block bool m_isIndeterminate : 1; 315cad810f21b803229eb11403f9209855525a25d57Steve Block bool m_hasType : 1; 316cad810f21b803229eb11403f9209855525a25d57Steve Block bool m_isActivatedSubmit : 1; 3178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project unsigned m_autocomplete : 2; // AutoCompleteSetting 318cad810f21b803229eb11403f9209855525a25d57Steve Block bool m_isAutofilled : 1; 319231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#if ENABLE(DATALIST) 320231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block bool m_hasNonEmptyList : 1; 321231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#endif 3222fc2651226baac27029e38c9d6ef883fa32084dbSteve Block bool m_stateRestored : 1; 3232fc2651226baac27029e38c9d6ef883fa32084dbSteve Block bool m_parsingInProgress : 1; 324bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen OwnPtr<InputType> m_inputType; 3258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}; 3268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} //namespace 3288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 330