2 * Copyright (C) 2012 Google Inc. All rights reserved.
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND
14 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16 * ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE
17 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
19 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
20 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26 #ifndef DateTimeFieldElements_h
27 #define DateTimeFieldElements_h
29 #if ENABLE(INPUT_MULTIPLE_FIELDS_UI)
30 #include "core/html/shadow/DateTimeNumericFieldElement.h"
31 #include "core/html/shadow/DateTimeSymbolicFieldElement.h"
35 class DateTimeAMPMFieldElement final : public DateTimeSymbolicFieldElement {
36 WTF_MAKE_NONCOPYABLE(DateTimeAMPMFieldElement);
39 static PassRefPtrWillBeRawPtr<DateTimeAMPMFieldElement> create(Document&, FieldOwner&, const Vector<String>&);
42 DateTimeAMPMFieldElement(Document&, FieldOwner&, const Vector<String>&);
44 // DateTimeFieldElement functions.
45 virtual void populateDateTimeFieldsState(DateTimeFieldsState&) override;
46 virtual void setValueAsDate(const DateComponents&) override;
47 virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&) override;
50 class DateTimeDayFieldElement final : public DateTimeNumericFieldElement {
51 WTF_MAKE_NONCOPYABLE(DateTimeDayFieldElement);
54 static PassRefPtrWillBeRawPtr<DateTimeDayFieldElement> create(Document&, FieldOwner&, const String& placeholder, const Range&);
57 DateTimeDayFieldElement(Document&, FieldOwner&, const String& placeholder, const Range&);
59 // DateTimeFieldElement functions.
60 virtual void populateDateTimeFieldsState(DateTimeFieldsState&) override;
61 virtual void setValueAsDate(const DateComponents&) override;
62 virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&) override;
65 class DateTimeHourFieldElementBase : public DateTimeNumericFieldElement {
66 WTF_MAKE_NONCOPYABLE(DateTimeHourFieldElementBase);
69 DateTimeHourFieldElementBase(Document&, FieldOwner&, const Range&, const Range& hardLimits, const Step&);
73 // DateTimeFieldElement functions.
74 virtual void setValueAsDate(const DateComponents&) override;
75 virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&) override;
78 class DateTimeHour11FieldElement final : public DateTimeHourFieldElementBase {
79 WTF_MAKE_NONCOPYABLE(DateTimeHour11FieldElement);
82 static PassRefPtrWillBeRawPtr<DateTimeHour11FieldElement> create(Document&, FieldOwner&, const Range&, const Step&);
85 DateTimeHour11FieldElement(Document&, FieldOwner&, const Range& hour23Range, const Step&);
87 // DateTimeFieldElement functions.
88 virtual void populateDateTimeFieldsState(DateTimeFieldsState&) override;
89 virtual void setValueAsInteger(int, EventBehavior = DispatchNoEvent) override;
92 class DateTimeHour12FieldElement final : public DateTimeHourFieldElementBase {
93 WTF_MAKE_NONCOPYABLE(DateTimeHour12FieldElement);
96 static PassRefPtrWillBeRawPtr<DateTimeHour12FieldElement> create(Document&, FieldOwner&, const Range&, const Step&);
99 DateTimeHour12FieldElement(Document&, FieldOwner&, const Range& hour23Range, const Step&);
101 // DateTimeFieldElement functions.
102 virtual void populateDateTimeFieldsState(DateTimeFieldsState&) override;
103 virtual void setValueAsInteger(int, EventBehavior = DispatchNoEvent) override;
106 class DateTimeHour23FieldElement final : public DateTimeHourFieldElementBase {
107 WTF_MAKE_NONCOPYABLE(DateTimeHour23FieldElement);
110 static PassRefPtrWillBeRawPtr<DateTimeHour23FieldElement> create(Document&, FieldOwner&, const Range&, const Step&);
113 DateTimeHour23FieldElement(Document&, FieldOwner&, const Range& hour23Range, const Step&);
115 // DateTimeFieldElement functions.
116 virtual void populateDateTimeFieldsState(DateTimeFieldsState&) override;
117 virtual void setValueAsInteger(int, EventBehavior = DispatchNoEvent) override;
120 class DateTimeHour24FieldElement final : public DateTimeHourFieldElementBase {
121 WTF_MAKE_NONCOPYABLE(DateTimeHour24FieldElement);
124 static PassRefPtrWillBeRawPtr<DateTimeHour24FieldElement> create(Document&, FieldOwner&, const Range&, const Step&);
127 DateTimeHour24FieldElement(Document&, FieldOwner&, const Range& hour23Range, const Step&);
129 // DateTimeFieldElement functions.
130 virtual void populateDateTimeFieldsState(DateTimeFieldsState&) override;
131 virtual void setValueAsInteger(int, EventBehavior = DispatchNoEvent) override;
134 class DateTimeMillisecondFieldElement final : public DateTimeNumericFieldElement {
135 WTF_MAKE_NONCOPYABLE(DateTimeMillisecondFieldElement);
138 static PassRefPtrWillBeRawPtr<DateTimeMillisecondFieldElement> create(Document&, FieldOwner&, const Range&, const Step&);
141 DateTimeMillisecondFieldElement(Document&, FieldOwner&, const Range&, const Step&);
143 // DateTimeFieldElement functions.
144 virtual void populateDateTimeFieldsState(DateTimeFieldsState&) override;
145 virtual void setValueAsDate(const DateComponents&) override;
146 virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&) override;
149 class DateTimeMinuteFieldElement final : public DateTimeNumericFieldElement {
150 WTF_MAKE_NONCOPYABLE(DateTimeMinuteFieldElement);
153 static PassRefPtrWillBeRawPtr<DateTimeMinuteFieldElement> create(Document&, FieldOwner&, const Range&, const Step&);
156 DateTimeMinuteFieldElement(Document&, FieldOwner&, const Range&, const Step&);
158 // DateTimeFieldElement functions.
159 virtual void populateDateTimeFieldsState(DateTimeFieldsState&) override;
160 virtual void setValueAsDate(const DateComponents&) override;
161 virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&) override;
164 class DateTimeMonthFieldElement final : public DateTimeNumericFieldElement {
165 WTF_MAKE_NONCOPYABLE(DateTimeMonthFieldElement);
168 static PassRefPtrWillBeRawPtr<DateTimeMonthFieldElement> create(Document&, FieldOwner&, const String& placeholder, const Range&);
171 DateTimeMonthFieldElement(Document&, FieldOwner&, const String& placeholder, const Range&);
173 // DateTimeFieldElement functions.
174 virtual void populateDateTimeFieldsState(DateTimeFieldsState&) override;
175 virtual void setValueAsDate(const DateComponents&) override;
176 virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&) override;
179 class DateTimeSecondFieldElement final : public DateTimeNumericFieldElement {
180 WTF_MAKE_NONCOPYABLE(DateTimeSecondFieldElement);
183 static PassRefPtrWillBeRawPtr<DateTimeSecondFieldElement> create(Document&, FieldOwner&, const Range&, const Step&);
186 DateTimeSecondFieldElement(Document&, FieldOwner&, const Range&, const Step&);
188 // DateTimeFieldElement functions.
189 virtual void populateDateTimeFieldsState(DateTimeFieldsState&) override;
190 virtual void setValueAsDate(const DateComponents&) override;
191 virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&) override;
194 class DateTimeSymbolicMonthFieldElement final : public DateTimeSymbolicFieldElement {
195 WTF_MAKE_NONCOPYABLE(DateTimeSymbolicMonthFieldElement);
198 static PassRefPtrWillBeRawPtr<DateTimeSymbolicMonthFieldElement> create(Document&, FieldOwner&, const Vector<String>&, int minimum, int maximum);
201 DateTimeSymbolicMonthFieldElement(Document&, FieldOwner&, const Vector<String>&, int minimum, int maximum);
203 // DateTimeFieldElement functions.
204 virtual void populateDateTimeFieldsState(DateTimeFieldsState&) override;
205 virtual void setValueAsDate(const DateComponents&) override;
206 virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&) override;
209 class DateTimeWeekFieldElement final : public DateTimeNumericFieldElement {
210 WTF_MAKE_NONCOPYABLE(DateTimeWeekFieldElement);
213 static PassRefPtrWillBeRawPtr<DateTimeWeekFieldElement> create(Document&, FieldOwner&, const Range&);
216 DateTimeWeekFieldElement(Document&, FieldOwner&, const Range&);
218 // DateTimeFieldElement functions.
219 virtual void populateDateTimeFieldsState(DateTimeFieldsState&) override;
220 virtual void setValueAsDate(const DateComponents&) override;
221 virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&) override;
224 class DateTimeYearFieldElement final : public DateTimeNumericFieldElement {
225 WTF_MAKE_NONCOPYABLE(DateTimeYearFieldElement);
238 , minIsSpecified(false)
239 , maxIsSpecified(false)
244 static PassRefPtrWillBeRawPtr<DateTimeYearFieldElement> create(Document&, FieldOwner&, const Parameters&);
247 DateTimeYearFieldElement(Document&, FieldOwner&, const Parameters&);
249 // DateTimeFieldElement functions.
250 virtual void populateDateTimeFieldsState(DateTimeFieldsState&) override;
251 virtual void setValueAsDate(const DateComponents&) override;
252 virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&) override;
254 // DateTimeNumericFieldElement functions.
255 virtual int defaultValueForStepDown() const override;
256 virtual int defaultValueForStepUp() const override;
258 bool m_minIsSpecified;
259 bool m_maxIsSpecified;