1643ca7872b450ea4efacab6188849e5aac2ba161Steve Block/* 2643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * Copyright (C) 2009 Google Inc. All rights reserved. 3643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * 4643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * Redistribution and use in source and binary forms, with or without 5643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * modification, are permitted provided that the following conditions are 6643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * met: 7643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * 8643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * * Redistributions of source code must retain the above copyright 9643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * notice, this list of conditions and the following disclaimer. 10643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * * Redistributions in binary form must reproduce the above 11643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * copyright notice, this list of conditions and the following disclaimer 12643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * in the documentation and/or other materials provided with the 13643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * distribution. 14643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * * Neither the name of Google Inc. nor the names of its 15643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * contributors may be used to endorse or promote products derived from 16643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * this software without specific prior written permission. 17643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * 18643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29643ca7872b450ea4efacab6188849e5aac2ba161Steve Block */ 30643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 31643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#ifndef WebInputElement_h 32643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#define WebInputElement_h 33643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 34dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#include "WebFormControlElement.h" 35643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 36643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#if WEBKIT_IMPLEMENTATION 37643ca7872b450ea4efacab6188849e5aac2ba161Steve Blocknamespace WebCore { class HTMLInputElement; } 38643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#endif 39643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 40643ca7872b450ea4efacab6188849e5aac2ba161Steve Blocknamespace WebKit { 41643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 42643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Provides readonly access to some properties of a DOM input element node. 43dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block class WebInputElement : public WebFormControlElement { 44643ca7872b450ea4efacab6188849e5aac2ba161Steve Block public: 45dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block WebInputElement() : WebFormControlElement() { } 46cad810f21b803229eb11403f9209855525a25d57Steve Block WebInputElement(const WebInputElement& element) : WebFormControlElement(element) { } 47643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 48cad810f21b803229eb11403f9209855525a25d57Steve Block WebInputElement& operator=(const WebInputElement& element) 49dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block { 50cad810f21b803229eb11403f9209855525a25d57Steve Block WebFormControlElement::assign(element); 51dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block return *this; 52dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block } 53cad810f21b803229eb11403f9209855525a25d57Steve Block void assign(const WebInputElement& element) { WebFormControlElement::assign(element); } 54643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 5568513a70bcd92384395513322f1b801e7bf9c729Steve Block // This returns true for all of textfield-looking types such as text, 5668513a70bcd92384395513322f1b801e7bf9c729Steve Block // password, search, email, url, and number. 5768513a70bcd92384395513322f1b801e7bf9c729Steve Block WEBKIT_API bool isTextField() const; 5868513a70bcd92384395513322f1b801e7bf9c729Steve Block // This returns true only for type=text. 5968513a70bcd92384395513322f1b801e7bf9c729Steve Block WEBKIT_API bool isText() const; 6068513a70bcd92384395513322f1b801e7bf9c729Steve Block WEBKIT_API bool isPasswordField() const; 6168513a70bcd92384395513322f1b801e7bf9c729Steve Block WEBKIT_API bool isImageButton() const; 62d0825bca7fe65beaee391d30da42e937db621564Steve Block WEBKIT_API bool autoComplete() const; 63dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block WEBKIT_API int maxLength() const; 648a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block WEBKIT_API bool isActivatedSubmit() const; 65643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WEBKIT_API void setActivatedSubmit(bool); 666c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen WEBKIT_API int size() const; 6728040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu WEBKIT_API void setValue(const WebString&, bool sendChangeEvent = false); 68643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WEBKIT_API WebString value() const; 69e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke WEBKIT_API void setSuggestedValue(const WebString&); 70e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke WEBKIT_API WebString suggestedValue() const; 71545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch WEBKIT_API void setPlaceholder(const WebString&); 72545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch WEBKIT_API WebString placeholder() const; 73545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch WEBKIT_API bool isAutofilled() const; 74643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WEBKIT_API void setAutofilled(bool); 75643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WEBKIT_API void setSelectionRange(int, int); 7628040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu WEBKIT_API int selectionStart() const; 7728040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu WEBKIT_API int selectionEnd() const; 785ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen WEBKIT_API bool isValidValue(const WebString&) const; 7981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch WEBKIT_API bool isChecked() const; 80dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 814576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang // Exposes the default value of the maxLength attribute. 822fc2651226baac27029e38c9d6ef883fa32084dbSteve Block WEBKIT_API static int defaultMaxLength(); 834576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 84dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#if WEBKIT_IMPLEMENTATION 85dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block WebInputElement(const WTF::PassRefPtr<WebCore::HTMLInputElement>&); 86dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block WebInputElement& operator=(const WTF::PassRefPtr<WebCore::HTMLInputElement>&); 87dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block operator WTF::PassRefPtr<WebCore::HTMLInputElement>() const; 88dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#endif 89643ca7872b450ea4efacab6188849e5aac2ba161Steve Block }; 90643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 912fc2651226baac27029e38c9d6ef883fa32084dbSteve Block WEBKIT_API WebInputElement* toWebInputElement(WebElement*); 922fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 932fc2651226baac27029e38c9d6ef883fa32084dbSteve Block inline const WebInputElement* toWebInputElement(const WebElement* element) 942fc2651226baac27029e38c9d6ef883fa32084dbSteve Block { 952fc2651226baac27029e38c9d6ef883fa32084dbSteve Block return toWebInputElement(const_cast<WebElement*>(element)); 962fc2651226baac27029e38c9d6ef883fa32084dbSteve Block } 972fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 98643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} // namespace WebKit 99643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 100643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#endif 101