15267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)/* 25267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * Copyright (C) 2009 Google Inc. All rights reserved. 35267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * 45267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * Redistribution and use in source and binary forms, with or without 55267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * modification, are permitted provided that the following conditions are 65267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * met: 75267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * 85267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * * Redistributions of source code must retain the above copyright 95267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * notice, this list of conditions and the following disclaimer. 105267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * * Redistributions in binary form must reproduce the above 115267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * copyright notice, this list of conditions and the following disclaimer 125267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * in the documentation and/or other materials provided with the 135267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * distribution. 145267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * * Neither the name of Google Inc. nor the names of its 155267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * contributors may be used to endorse or promote products derived from 165267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * this software without specific prior written permission. 175267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * 185267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 195267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 205267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 215267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 225267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 235267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 245267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 255267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 265267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 275267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 285267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 295267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) */ 305267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 315267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#ifndef WebInputElement_h 325267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#define WebInputElement_h 335267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 345267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#include "WebFormControlElement.h" 355267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 3651b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)namespace blink { 375267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 38e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)class HTMLInputElement; 39e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)class WebElementCollection; 405267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 41e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)// Provides readonly access to some properties of a DOM input element node. 42e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)class WebInputElement : public WebFormControlElement { 43e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)public: 44e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) WebInputElement() : WebFormControlElement() { } 45e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) WebInputElement(const WebInputElement& element) : WebFormControlElement(element) { } 465267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 47e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) WebInputElement& operator=(const WebInputElement& element) 48e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) { 49e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) WebFormControlElement::assign(element); 50e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) return *this; 51e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) } 52e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) void assign(const WebInputElement& element) { WebFormControlElement::assign(element); } 53e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) 54e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) // This returns true for all of textfield-looking types such as text, 55e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) // password, search, email, url, and number. 56e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) BLINK_EXPORT bool isTextField() const; 57e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) // This returns true only for type=text. 58e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) BLINK_EXPORT bool isText() const; 59e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) BLINK_EXPORT bool isEmailField() const; 60e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) BLINK_EXPORT bool isPasswordField() const; 61e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) BLINK_EXPORT bool isImageButton() const; 62e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) BLINK_EXPORT bool isRadioButton() const; 63e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) BLINK_EXPORT bool isCheckbox() const; 64e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) BLINK_EXPORT int maxLength() const; 65e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) BLINK_EXPORT void setActivatedSubmit(bool); 66e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) BLINK_EXPORT int size() const; 67e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) BLINK_EXPORT void setChecked(bool, bool sendEvents = false); 68e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) // Sets the value inside the text field without being sanitized. Can't be 69e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) // used if a renderer doesn't exist or on a non text field type. Caret will 70e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) // be moved to the end. 71e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) BLINK_EXPORT void setEditingValue(const WebString&); 72e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) BLINK_EXPORT bool isValidValue(const WebString&) const; 73e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) BLINK_EXPORT bool isChecked() const; 74e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) BLINK_EXPORT bool isMultiple() const; 75e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) 76e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) BLINK_EXPORT WebElementCollection dataListOptions() const; 77e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) 78e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) // Return the localized value for this input type. 79e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) BLINK_EXPORT WebString localizeValue(const WebString&) const; 80e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) 81e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) // Exposes the default value of the maxLength attribute. 82e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) BLINK_EXPORT static int defaultMaxLength(); 83e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) 84e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) // If true, forces the text of the element to be visible. 85e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) BLINK_EXPORT void setShouldRevealPassword(bool value); 8609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 8706f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)#if BLINK_IMPLEMENTATION 88e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) WebInputElement(const PassRefPtrWillBeRawPtr<HTMLInputElement>&); 89e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) WebInputElement& operator=(const PassRefPtrWillBeRawPtr<HTMLInputElement>&); 90e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) operator PassRefPtrWillBeRawPtr<HTMLInputElement>() const; 915267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#endif 92e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)}; 93e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) 94e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)// This returns 0 if the specified WebElement is not a WebInputElement. 95e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)BLINK_EXPORT WebInputElement* toWebInputElement(WebElement*); 96e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)// This returns 0 if the specified WebElement is not a WebInputElement. 97e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)inline const WebInputElement* toWebInputElement(const WebElement* element) 98e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles){ 99e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) return toWebInputElement(const_cast<WebElement*>(element)); 100e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)} 1015267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 10251b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)} // namespace blink 1035267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 1045267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#endif 105