15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/*
25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *           (C) 1999 Antti Koivisto (koivisto@kde.org)
45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *           (C) 2000 Dirk Mueller (mueller@kde.org)
55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2004, 2005, 2006, 2007, 2010 Apple Inc. All rights reserved.
65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2012 Samsung Electronics. All rights reserved.
75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * This library is free software; you can redistribute it and/or
95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * modify it under the terms of the GNU Library General Public
105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * License as published by the Free Software Foundation; either
115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * version 2 of the License, or (at your option) any later version.
125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * This library is distributed in the hope that it will be useful,
145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * but WITHOUT ANY WARRANTY; without even the implied warranty of
155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Library General Public License for more details.
175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * You should have received a copy of the GNU Library General Public License
195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * along with this library; see the file COPYING.LIB.  If not, write to
205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Boston, MA 02110-1301, USA.
225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */
245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef HTMLInputElement_h
265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define HTMLInputElement_h
275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/html/HTMLTextFormControlElement.h"
2906f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)#include "core/html/forms/StepRange.h"
301e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)#include "platform/FileChooser.h"
315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
32c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink {
335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
347242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucciclass AXObject;
355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class DragData;
36df95704c49daea886ddad70775bda23618d6274dBen Murdochclass ExceptionState;
375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class FileList;
385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class HTMLDataListElement;
39926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)class HTMLImageLoader;
405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class HTMLOptionElement;
415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class InputType;
42c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)class InputTypeView;
435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class KURL;
445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class ListAttributeTargetObserver;
4509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)class RadioButtonGroupScope;
465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)struct DateTimeChooserParameters;
475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
48926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)class HTMLInputElement : public HTMLTextFormControlElement {
497242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    DEFINE_WRAPPERTYPEINFO();
505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)public:
51323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)    static PassRefPtrWillBeRawPtr<HTMLInputElement> create(Document&, HTMLFormElement*, bool createdByParser);
525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual ~HTMLInputElement();
53323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)    virtual void trace(Visitor*) OVERRIDE;
545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    DEFINE_ATTRIBUTE_EVENT_LISTENER(webkitspeechchange);
565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
5709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual bool shouldAutocomplete() const OVERRIDE FINAL;
585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    // For ValidityState
6009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual bool hasBadInput() const OVERRIDE FINAL;
6109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual bool patternMismatch() const OVERRIDE FINAL;
6209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual bool rangeUnderflow() const OVERRIDE FINAL;
6309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual bool rangeOverflow() const OVERRIDE FINAL;
6409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual bool stepMismatch() const OVERRIDE FINAL;
6509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual bool tooLong() const OVERRIDE FINAL;
6609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual bool typeMismatch() const OVERRIDE FINAL;
6709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual bool valueMissing() const OVERRIDE FINAL;
6809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual String validationMessage() const OVERRIDE FINAL;
695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    // Returns the minimum value for type=date, number, or range.  Don't call this for other types.
715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    double minimum() const;
725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    // Returns the maximum value for type=date, number, or range.  Don't call this for other types.
735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    // This always returns a value which is >= minimum().
745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    double maximum() const;
755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    // Sets the "allowed value step" defined in the HTML spec to the specified double pointer.
765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    // Returns false if there is no "allowed value step."
775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool getAllowedValueStep(Decimal*) const;
785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    StepRange createStepRange(AnyStepHandling) const;
795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    Decimal findClosestTickMarkValue(const Decimal&);
815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    // Implementations of HTMLInputElement::stepUp() and stepDown().
83df95704c49daea886ddad70775bda23618d6274dBen Murdoch    void stepUp(int, ExceptionState&);
84df95704c49daea886ddad70775bda23618d6274dBen Murdoch    void stepDown(int, ExceptionState&);
855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    // stepUp()/stepDown() for user-interaction.
865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool isSteppable() const;
875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
887242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    // Returns true if the type is button, reset, or submit.
895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool isTextButton() const;
907242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    // Returns true if the type is email, number, password, search, tel, text,
917242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    // or url.
925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool isTextField() const;
935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool checked() const { return m_isChecked; }
955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void setChecked(bool, TextFieldEventBehavior = DispatchNoEvent);
965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    // 'indeterminate' is a state independent of the checked state that causes the control to draw in a way that hides the actual state.
985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool indeterminate() const { return m_isIndeterminate; }
995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void setIndeterminate(bool);
1005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    // shouldAppearChecked is used by the rendering tree/CSS while checked() is used by JS to determine checked state
1015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool shouldAppearChecked() const;
10253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    virtual bool shouldAppearIndeterminate() const OVERRIDE;
1035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    int size() const;
1055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool sizeShouldIncludeDecoration(int& preferredSize) const;
1065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
107a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)    void setType(const AtomicString&);
1085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
10909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual String value() const OVERRIDE;
110df95704c49daea886ddad70775bda23618d6274dBen Murdoch    void setValue(const String&, ExceptionState&, TextFieldEventBehavior = DispatchNoEvent);
1115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void setValue(const String&, TextFieldEventBehavior = DispatchNoEvent);
1125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void setValueForUser(const String&);
1135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    // Checks if the specified string would be a valid value.
1145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    // We should not call this for types with no string value such as CHECKBOX and RADIO.
1155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool isValidValue(const String&) const;
1165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool hasDirtyValue() const { return !m_valueIfDirty.isNull(); };
1175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    String sanitizeValue(const String&) const;
1195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    String localizeValue(const String&) const;
1215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    const String& suggestedValue() const;
1235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void setSuggestedValue(const String&);
1245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void setEditingValue(const String&);
1265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
127a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch    double valueAsDate(bool& isNull) const;
128df95704c49daea886ddad70775bda23618d6274dBen Murdoch    void setValueAsDate(double, ExceptionState&);
1295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    double valueAsNumber() const;
131df95704c49daea886ddad70775bda23618d6274dBen Murdoch    void setValueAsNumber(double, ExceptionState&, TextFieldEventBehavior = DispatchNoEvent);
1325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    String valueWithDefault() const;
1345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void setValueFromRenderer(const String&);
1365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
137df95704c49daea886ddad70775bda23618d6274dBen Murdoch    int selectionStartForBinding(ExceptionState&) const;
138df95704c49daea886ddad70775bda23618d6274dBen Murdoch    int selectionEndForBinding(ExceptionState&) const;
139df95704c49daea886ddad70775bda23618d6274dBen Murdoch    String selectionDirectionForBinding(ExceptionState&) const;
140df95704c49daea886ddad70775bda23618d6274dBen Murdoch    void setSelectionStartForBinding(int, ExceptionState&);
141df95704c49daea886ddad70775bda23618d6274dBen Murdoch    void setSelectionEndForBinding(int, ExceptionState&);
142df95704c49daea886ddad70775bda23618d6274dBen Murdoch    void setSelectionDirectionForBinding(const String&, ExceptionState&);
143df95704c49daea886ddad70775bda23618d6274dBen Murdoch    void setSelectionRangeForBinding(int start, int end, ExceptionState&);
144df95704c49daea886ddad70775bda23618d6274dBen Murdoch    void setSelectionRangeForBinding(int start, int end, const String& direction, ExceptionState&);
1455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
14609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual bool rendererIsNeeded(const RenderStyle&) OVERRIDE FINAL;
14709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual RenderObject* createRenderer(RenderStyle*) OVERRIDE;
14809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void detach(const AttachContext& = AttachContext()) OVERRIDE FINAL;
149d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    virtual void updateFocusAppearance(bool restorePreviousSelection) OVERRIDE FINAL;
1505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    // FIXME: For isActivatedSubmit and setActivatedSubmit, we should use the NVI-idiom here by making
1525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    // it private virtual in all classes and expose a public method in HTMLFormControlElement to call
1535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    // the private virtual method.
15409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual bool isActivatedSubmit() const OVERRIDE FINAL;
15509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void setActivatedSubmit(bool flag) OVERRIDE FINAL;
1565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    String altText() const;
1585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    int maxResults() const { return m_maxResults; }
1605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
161a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)    const AtomicString& defaultValue() const;
1625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    Vector<String> acceptMIMETypes();
1645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    Vector<String> acceptFileExtensions();
165a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)    const AtomicString& alt() const;
1665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void setSize(unsigned);
168df95704c49daea886ddad70775bda23618d6274dBen Murdoch    void setSize(unsigned, ExceptionState&);
1695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    KURL src() const;
1715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
17209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    int maxLength() const;
173df95704c49daea886ddad70775bda23618d6274dBen Murdoch    void setMaxLength(int, ExceptionState&);
1745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool multiple() const;
1765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
177197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    FileList* files();
178d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    void setFiles(PassRefPtrWillBeRawPtr<FileList>);
1795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    // Returns true if the given DragData has more than one dropped files.
1815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool receiveDroppedFiles(const DragData*);
1825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    String droppedFileSystemId();
1845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    // These functions are used for rendering the input active during a
1865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    // drag-and-drop operation.
1875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool canReceiveDroppedFiles() const;
1885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void setCanReceiveDroppedFiles(bool);
1895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void onSearch();
1915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
192926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    void updateClearButtonVisibility();
193926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
1945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual bool willRespondToMouseClickEvents() OVERRIDE;
1955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    HTMLElement* list() const;
1975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    HTMLDataListElement* dataList() const;
19809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    bool hasValidDataListOptions() const;
1995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void listAttributeTargetChanged();
2005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2017242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    HTMLInputElement* checkedRadioButtonForGroup();
202926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    bool isInRequiredRadioButtonGroup();
2035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    // Functions for InputType classes.
2055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void setValueInternal(const String&, TextFieldEventBehavior);
2065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool valueAttributeWasUpdatedAfterParsing() const { return m_valueAttributeWasUpdatedAfterParsing; }
207d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    void updateView();
208a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch    bool needsToUpdateViewValue() const { return m_needsToUpdateViewValue; }
20976c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)    virtual void setInnerEditorValue(const String&) OVERRIDE;
2105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void cacheSelectionInResponseToSetValue(int caretOffset) { cacheSelection(caretOffset, caretOffset, SelectionHasNoDirection); }
2125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    // For test purposes.
2145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void selectColorInColorChooser(const Color&);
2157242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    void endColorChooser();
2165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    String defaultToolTip() const;
2185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
219f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)    static const int maximumLength;
2205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    unsigned height() const;
2225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    unsigned width() const;
2235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void setHeight(unsigned);
2245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void setWidth(unsigned);
2255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
22609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void blur() OVERRIDE FINAL;
2275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void defaultBlur();
2285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
22909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual const AtomicString& name() const OVERRIDE FINAL;
2305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
231f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles)    void beginEditing();
232926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    void endEditing();
233926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
2345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    static Vector<FileChooserFileInfo> filesFromFileInputFormControlState(const FormControlState&);
2355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
23609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual bool matchesReadOnlyPseudoClass() const OVERRIDE FINAL;
23709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual bool matchesReadWritePseudoClass() const OVERRIDE FINAL;
23809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void setRangeText(const String& replacement, ExceptionState&) OVERRIDE FINAL;
23909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void setRangeText(const String& replacement, unsigned start, unsigned end, const String& selectionMode, ExceptionState&) OVERRIDE FINAL;
2405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
241926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    bool hasImageLoader() const { return m_imageLoader; }
242926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    HTMLImageLoader* imageLoader();
243926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
2445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool setupDateTimeChooserParameters(DateTimeChooserParameters&);
2455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
246e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    bool supportsInputModeAttribute() const;
247e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
24809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    void setShouldRevealPassword(bool value);
24909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    bool shouldRevealPassword() const { return m_shouldRevealPassword; }
2507242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    AXObject* popupRootAXObject();
251c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)    virtual void didNotifySubtreeInsertionsToDocument() OVERRIDE;
252c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)
2535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)protected:
25451b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)    HTMLInputElement(Document&, HTMLFormElement*, bool createdByParser);
255926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
25609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void defaultEventHandler(Event*) OVERRIDE;
257926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
258926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)private:
259926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    enum AutoCompleteSetting { Uninitialized, On, Off };
260926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
26109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void didAddUserAgentShadowRoot(ShadowRoot&) OVERRIDE FINAL;
2626f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch    virtual void willAddFirstAuthorShadowRoot() OVERRIDE FINAL;
2635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
26409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void willChangeForm() OVERRIDE FINAL;
26509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void didChangeForm() OVERRIDE FINAL;
2665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    virtual InsertionNotificationRequest insertedInto(ContainerNode*) OVERRIDE;
26709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void removedFrom(ContainerNode*) OVERRIDE FINAL;
26809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void didMoveToNewDocument(Document& oldDocument) OVERRIDE FINAL;
26909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void removeAllEventListeners() OVERRIDE FINAL;
2705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
27109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual bool hasCustomFocusLogic() const OVERRIDE FINAL;
27209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual bool isKeyboardFocusable() const OVERRIDE FINAL;
27309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual bool shouldShowFocusRingOnMouseFocus() const OVERRIDE FINAL;
27409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual bool isEnumeratable() const OVERRIDE FINAL;
27509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual bool isInteractiveContent() const OVERRIDE FINAL;
27609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual bool supportLabels() const OVERRIDE FINAL;
2775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
27809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual bool isTextFormControl() const OVERRIDE FINAL { return isTextField(); }
2795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
28009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual bool canTriggerImplicitSubmission() const OVERRIDE FINAL { return isTextField(); }
2815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
28209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual const AtomicString& formControlType() const OVERRIDE FINAL;
2835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
28409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual bool shouldSaveAndRestoreFormControlState() const OVERRIDE FINAL;
28509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual FormControlState saveFormControlState() const OVERRIDE FINAL;
28609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void restoreFormControlState(const FormControlState&) OVERRIDE FINAL;
2875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
28809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual bool canStartSelection() const OVERRIDE FINAL;
2895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
29009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void accessKeyAction(bool sendMouseEvents) OVERRIDE FINAL;
2915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
292197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    virtual void attributeWillChange(const QualifiedName&, const AtomicString& oldValue, const AtomicString& newValue) OVERRIDE;
293926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE;
29409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual bool isPresentationAttribute(const QualifiedName&) const OVERRIDE FINAL;
29509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void collectStyleForPresentationAttribute(const QualifiedName&, const AtomicString&, MutableStylePropertySet*) OVERRIDE FINAL;
29609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void finishParsingChildren() OVERRIDE FINAL;
2975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
29809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void copyNonAttributePropertiesFromElement(const Element&) OVERRIDE FINAL;
2995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
30009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void attach(const AttachContext& = AttachContext()) OVERRIDE FINAL;
3015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
30209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual bool appendFormData(FormDataList&, bool) OVERRIDE FINAL;
30309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual String resultForDialogSubmit() OVERRIDE FINAL;
3045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
30509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual bool canBeSuccessfulSubmitButton() const OVERRIDE FINAL;
3065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
30709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void resetImpl() OVERRIDE FINAL;
30809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual bool supportsAutofocus() const OVERRIDE FINAL;
3095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
31009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void* preDispatchEventHandler(Event*) OVERRIDE FINAL;
31109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void postDispatchEventHandler(Event*, void* dataFromPreDispatch) OVERRIDE FINAL;
3125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
31309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual bool isURLAttribute(const Attribute&) const OVERRIDE FINAL;
31443e7502580f146aa5b3db8267ba6dbb5c733a489Torne (Richard Coles)    virtual bool hasLegalLinkAttribute(const QualifiedName&) const OVERRIDE FINAL;
31543e7502580f146aa5b3db8267ba6dbb5c733a489Torne (Richard Coles)    virtual const QualifiedName& subResourceAttributeName() const OVERRIDE FINAL;
31609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual bool isInRange() const OVERRIDE FINAL;
31709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual bool isOutOfRange() const OVERRIDE FINAL;
3185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool tooLong(const String&, NeedsToCheckDirtyFlag) const;
3205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
32109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual bool supportsPlaceholder() const OVERRIDE FINAL;
32209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void updatePlaceholderText() OVERRIDE FINAL;
32376c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)    virtual bool isEmptyValue() const OVERRIDE FINAL { return innerEditorValue().isEmpty(); }
32409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual bool isEmptySuggestedValue() const OVERRIDE FINAL { return suggestedValue().isEmpty(); }
32509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void handleFocusEvent(Element* oldFocusedElement, FocusType) OVERRIDE FINAL;
32609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void handleBlurEvent() OVERRIDE FINAL;
3277242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    virtual void dispatchFocusInEvent(const AtomicString& eventType, Element* oldFocusedElement, FocusType) OVERRIDE FINAL;
3285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
32909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual bool isOptionalFormControl() const OVERRIDE FINAL { return !isRequiredFormControl(); }
33009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual bool isRequiredFormControl() const OVERRIDE FINAL;
33109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual bool recalcWillValidate() const OVERRIDE FINAL;
33209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void requiredAttributeChanged() OVERRIDE FINAL;
3335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void updateType();
33502772c6a72f1ee0b226341a4f4439970c29fc861Ben Murdoch
33609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void subtreeHasChanged() OVERRIDE FINAL;
3375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
338f523d2789ac2f83c4eca0ee4d5161bfdb5f2d052Torne (Richard Coles)    void setListAttributeTargetObserver(PassOwnPtrWillBeRawPtr<ListAttributeTargetObserver>);
3395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void resetListAttributeTargetObserver();
340926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    void parseMaxLengthAttribute(const AtomicString&);
3415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void updateValueIfNeeded();
3425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    // Returns null if this isn't associated with any radio button group.
34409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    RadioButtonGroupScope* radioButtonGroupScope() const;
3455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void addToRadioButtonGroup();
3465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    void removeFromRadioButtonGroup();
347926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)#if ENABLE(INPUT_MULTIPLE_FIELDS_UI)
348926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    virtual PassRefPtr<RenderStyle> customStyleForRenderer() OVERRIDE;
349926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)#endif
3505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
351323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)    virtual bool shouldDispatchFormControlChangeEvent(String&, String&) OVERRIDE;
352323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)
3535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    AtomicString m_name;
3545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    String m_valueIfDirty;
3555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    String m_suggestedValue;
3565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    int m_size;
3575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    int m_maxLength;
3585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    short m_maxResults;
3595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool m_isChecked : 1;
3605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool m_reflectsCheckedAttribute : 1;
3615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool m_isIndeterminate : 1;
3625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool m_isActivatedSubmit : 1;
3635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    unsigned m_autocomplete : 2; // AutoCompleteSetting
3645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool m_hasNonEmptyList : 1;
3655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool m_stateRestored : 1;
3665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool m_parsingInProgress : 1;
3675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool m_valueAttributeWasUpdatedAfterParsing : 1;
3685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool m_canReceiveDroppedFiles : 1;
3695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool m_hasTouchEventHandler : 1;
37009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    bool m_shouldRevealPassword : 1;
371a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch    bool m_needsToUpdateViewValue : 1;
372323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)    RefPtrWillBeMember<InputType> m_inputType;
373323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)    RefPtrWillBeMember<InputTypeView> m_inputTypeView;
374926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    // The ImageLoader must be owned by this element because the loader code assumes
375926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    // that it lives as long as its owning element lives. If we move the loader into
376926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    // the ImageInput object we may delete the loader while this element lives on.
3775d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)    OwnPtrWillBeMember<HTMLImageLoader> m_imageLoader;
378f523d2789ac2f83c4eca0ee4d5161bfdb5f2d052Torne (Richard Coles)    OwnPtrWillBeMember<ListAttributeTargetObserver> m_listAttributeTargetObserver;
3795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
3805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3817242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci} // namespace blink
3827242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
3837242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#endif // HTMLInputElement_h
384