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