Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / core / html / shadow / DateTimeFieldElements.h
1 /*
2  * Copyright (C) 2012 Google Inc. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
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.
12  *
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
23  * SUCH DAMAGE.
24  */
25
26 #ifndef DateTimeFieldElements_h
27 #define DateTimeFieldElements_h
28
29 #if ENABLE(INPUT_MULTIPLE_FIELDS_UI)
30 #include "core/html/shadow/DateTimeNumericFieldElement.h"
31 #include "core/html/shadow/DateTimeSymbolicFieldElement.h"
32
33 namespace blink {
34
35 class DateTimeAMPMFieldElement final : public DateTimeSymbolicFieldElement {
36     WTF_MAKE_NONCOPYABLE(DateTimeAMPMFieldElement);
37
38 public:
39     static PassRefPtrWillBeRawPtr<DateTimeAMPMFieldElement> create(Document&, FieldOwner&, const Vector<String>&);
40
41 private:
42     DateTimeAMPMFieldElement(Document&, FieldOwner&, const Vector<String>&);
43
44     // DateTimeFieldElement functions.
45     virtual void populateDateTimeFieldsState(DateTimeFieldsState&) override;
46     virtual void setValueAsDate(const DateComponents&) override;
47     virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&) override;
48 };
49
50 class DateTimeDayFieldElement final : public DateTimeNumericFieldElement {
51     WTF_MAKE_NONCOPYABLE(DateTimeDayFieldElement);
52
53 public:
54     static PassRefPtrWillBeRawPtr<DateTimeDayFieldElement> create(Document&, FieldOwner&, const String& placeholder, const Range&);
55
56 private:
57     DateTimeDayFieldElement(Document&, FieldOwner&, const String& placeholder, const Range&);
58
59     // DateTimeFieldElement functions.
60     virtual void populateDateTimeFieldsState(DateTimeFieldsState&) override;
61     virtual void setValueAsDate(const DateComponents&) override;
62     virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&) override;
63 };
64
65 class DateTimeHourFieldElementBase : public DateTimeNumericFieldElement {
66     WTF_MAKE_NONCOPYABLE(DateTimeHourFieldElementBase);
67
68 protected:
69     DateTimeHourFieldElementBase(Document&, FieldOwner&, const Range&, const Range& hardLimits, const Step&);
70     void initialize();
71
72 private:
73     // DateTimeFieldElement functions.
74     virtual void setValueAsDate(const DateComponents&) override;
75     virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&) override;
76 };
77
78 class DateTimeHour11FieldElement final : public DateTimeHourFieldElementBase {
79     WTF_MAKE_NONCOPYABLE(DateTimeHour11FieldElement);
80
81 public:
82     static PassRefPtrWillBeRawPtr<DateTimeHour11FieldElement> create(Document&, FieldOwner&, const Range&, const Step&);
83
84 private:
85     DateTimeHour11FieldElement(Document&, FieldOwner&, const Range& hour23Range, const Step&);
86
87     // DateTimeFieldElement functions.
88     virtual void populateDateTimeFieldsState(DateTimeFieldsState&) override;
89     virtual void setValueAsInteger(int, EventBehavior = DispatchNoEvent) override;
90 };
91
92 class DateTimeHour12FieldElement final : public DateTimeHourFieldElementBase {
93     WTF_MAKE_NONCOPYABLE(DateTimeHour12FieldElement);
94
95 public:
96     static PassRefPtrWillBeRawPtr<DateTimeHour12FieldElement> create(Document&, FieldOwner&, const Range&, const Step&);
97
98 private:
99     DateTimeHour12FieldElement(Document&, FieldOwner&, const Range& hour23Range, const Step&);
100
101     // DateTimeFieldElement functions.
102     virtual void populateDateTimeFieldsState(DateTimeFieldsState&) override;
103     virtual void setValueAsInteger(int, EventBehavior = DispatchNoEvent) override;
104 };
105
106 class DateTimeHour23FieldElement final : public DateTimeHourFieldElementBase {
107     WTF_MAKE_NONCOPYABLE(DateTimeHour23FieldElement);
108
109 public:
110     static PassRefPtrWillBeRawPtr<DateTimeHour23FieldElement> create(Document&, FieldOwner&, const Range&, const Step&);
111
112 private:
113     DateTimeHour23FieldElement(Document&, FieldOwner&, const Range& hour23Range, const Step&);
114
115     // DateTimeFieldElement functions.
116     virtual void populateDateTimeFieldsState(DateTimeFieldsState&) override;
117     virtual void setValueAsInteger(int, EventBehavior = DispatchNoEvent) override;
118 };
119
120 class DateTimeHour24FieldElement final : public DateTimeHourFieldElementBase {
121     WTF_MAKE_NONCOPYABLE(DateTimeHour24FieldElement);
122
123 public:
124     static PassRefPtrWillBeRawPtr<DateTimeHour24FieldElement> create(Document&, FieldOwner&, const Range&, const Step&);
125
126 private:
127     DateTimeHour24FieldElement(Document&, FieldOwner&, const Range& hour23Range, const Step&);
128
129     // DateTimeFieldElement functions.
130     virtual void populateDateTimeFieldsState(DateTimeFieldsState&) override;
131     virtual void setValueAsInteger(int, EventBehavior = DispatchNoEvent) override;
132 };
133
134 class DateTimeMillisecondFieldElement final : public DateTimeNumericFieldElement {
135     WTF_MAKE_NONCOPYABLE(DateTimeMillisecondFieldElement);
136
137 public:
138     static PassRefPtrWillBeRawPtr<DateTimeMillisecondFieldElement> create(Document&, FieldOwner&, const Range&, const Step&);
139
140 private:
141     DateTimeMillisecondFieldElement(Document&, FieldOwner&, const Range&, const Step&);
142
143     // DateTimeFieldElement functions.
144     virtual void populateDateTimeFieldsState(DateTimeFieldsState&) override;
145     virtual void setValueAsDate(const DateComponents&) override;
146     virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&) override;
147 };
148
149 class DateTimeMinuteFieldElement final : public DateTimeNumericFieldElement {
150     WTF_MAKE_NONCOPYABLE(DateTimeMinuteFieldElement);
151
152 public:
153     static PassRefPtrWillBeRawPtr<DateTimeMinuteFieldElement> create(Document&, FieldOwner&, const Range&, const Step&);
154
155 private:
156     DateTimeMinuteFieldElement(Document&, FieldOwner&, const Range&, const Step&);
157
158     // DateTimeFieldElement functions.
159     virtual void populateDateTimeFieldsState(DateTimeFieldsState&) override;
160     virtual void setValueAsDate(const DateComponents&) override;
161     virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&) override;
162 };
163
164 class DateTimeMonthFieldElement final : public DateTimeNumericFieldElement {
165     WTF_MAKE_NONCOPYABLE(DateTimeMonthFieldElement);
166
167 public:
168     static PassRefPtrWillBeRawPtr<DateTimeMonthFieldElement> create(Document&, FieldOwner&, const String& placeholder, const Range&);
169
170 private:
171     DateTimeMonthFieldElement(Document&, FieldOwner&, const String& placeholder, const Range&);
172
173     // DateTimeFieldElement functions.
174     virtual void populateDateTimeFieldsState(DateTimeFieldsState&) override;
175     virtual void setValueAsDate(const DateComponents&) override;
176     virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&) override;
177 };
178
179 class DateTimeSecondFieldElement final : public DateTimeNumericFieldElement {
180     WTF_MAKE_NONCOPYABLE(DateTimeSecondFieldElement);
181
182 public:
183     static PassRefPtrWillBeRawPtr<DateTimeSecondFieldElement> create(Document&, FieldOwner&, const Range&, const Step&);
184
185 private:
186     DateTimeSecondFieldElement(Document&, FieldOwner&, const Range&, const Step&);
187
188     // DateTimeFieldElement functions.
189     virtual void populateDateTimeFieldsState(DateTimeFieldsState&) override;
190     virtual void setValueAsDate(const DateComponents&) override;
191     virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&) override;
192 };
193
194 class DateTimeSymbolicMonthFieldElement final : public DateTimeSymbolicFieldElement {
195     WTF_MAKE_NONCOPYABLE(DateTimeSymbolicMonthFieldElement);
196
197 public:
198     static PassRefPtrWillBeRawPtr<DateTimeSymbolicMonthFieldElement> create(Document&, FieldOwner&, const Vector<String>&, int minimum, int maximum);
199
200 private:
201     DateTimeSymbolicMonthFieldElement(Document&, FieldOwner&, const Vector<String>&, int minimum, int maximum);
202
203     // DateTimeFieldElement functions.
204     virtual void populateDateTimeFieldsState(DateTimeFieldsState&) override;
205     virtual void setValueAsDate(const DateComponents&) override;
206     virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&) override;
207 };
208
209 class DateTimeWeekFieldElement final : public DateTimeNumericFieldElement {
210     WTF_MAKE_NONCOPYABLE(DateTimeWeekFieldElement);
211
212 public:
213     static PassRefPtrWillBeRawPtr<DateTimeWeekFieldElement> create(Document&, FieldOwner&, const Range&);
214
215 private:
216     DateTimeWeekFieldElement(Document&, FieldOwner&, const Range&);
217
218     // DateTimeFieldElement functions.
219     virtual void populateDateTimeFieldsState(DateTimeFieldsState&) override;
220     virtual void setValueAsDate(const DateComponents&) override;
221     virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&) override;
222 };
223
224 class DateTimeYearFieldElement final : public DateTimeNumericFieldElement {
225     WTF_MAKE_NONCOPYABLE(DateTimeYearFieldElement);
226
227 public:
228     struct Parameters {
229         int minimumYear;
230         int maximumYear;
231         bool minIsSpecified;
232         bool maxIsSpecified;
233         String placeholder;
234
235         Parameters()
236             : minimumYear(-1)
237             , maximumYear(-1)
238             , minIsSpecified(false)
239             , maxIsSpecified(false)
240         {
241         }
242     };
243
244     static PassRefPtrWillBeRawPtr<DateTimeYearFieldElement> create(Document&, FieldOwner&, const Parameters&);
245
246 private:
247     DateTimeYearFieldElement(Document&, FieldOwner&, const Parameters&);
248
249     // DateTimeFieldElement functions.
250     virtual void populateDateTimeFieldsState(DateTimeFieldsState&) override;
251     virtual void setValueAsDate(const DateComponents&) override;
252     virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&) override;
253
254     // DateTimeNumericFieldElement functions.
255     virtual int defaultValueForStepDown() const override;
256     virtual int defaultValueForStepUp() const override;
257
258     bool m_minIsSpecified;
259     bool m_maxIsSpecified;
260 };
261
262 } // namespace blink
263
264 #endif
265 #endif