OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2012 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 17 matching lines...) Expand all Loading... |
28 #include "core/html/shadow/DateTimeFieldElements.h" | 28 #include "core/html/shadow/DateTimeFieldElements.h" |
29 | 29 |
30 #include "core/html/DateTimeFieldsState.h" | 30 #include "core/html/DateTimeFieldsState.h" |
31 #include "core/platform/DateComponents.h" | 31 #include "core/platform/DateComponents.h" |
32 #include "core/platform/LocalizedStrings.h" | 32 #include "core/platform/LocalizedStrings.h" |
33 #include "wtf/CurrentTime.h" | 33 #include "wtf/CurrentTime.h" |
34 #include "wtf/DateMath.h" | 34 #include "wtf/DateMath.h" |
35 | 35 |
36 namespace WebCore { | 36 namespace WebCore { |
37 | 37 |
38 DateTimeAMPMFieldElement::DateTimeAMPMFieldElement(Document* document, FieldOwne
r& fieldOwner, const Vector<String>& ampmLabels) | 38 DateTimeAMPMFieldElement::DateTimeAMPMFieldElement(Document& document, FieldOwne
r& fieldOwner, const Vector<String>& ampmLabels) |
39 : DateTimeSymbolicFieldElement(document, fieldOwner, ampmLabels, 0, 1) | 39 : DateTimeSymbolicFieldElement(document, fieldOwner, ampmLabels, 0, 1) |
40 { | 40 { |
41 } | 41 } |
42 | 42 |
43 PassRefPtr<DateTimeAMPMFieldElement> DateTimeAMPMFieldElement::create(Document*
document, FieldOwner& fieldOwner, const Vector<String>& ampmLabels) | 43 PassRefPtr<DateTimeAMPMFieldElement> DateTimeAMPMFieldElement::create(Document&
document, FieldOwner& fieldOwner, const Vector<String>& ampmLabels) |
44 { | 44 { |
45 DEFINE_STATIC_LOCAL(AtomicString, ampmPsuedoId, ("-webkit-datetime-edit-ampm
-field", AtomicString::ConstructFromLiteral)); | 45 DEFINE_STATIC_LOCAL(AtomicString, ampmPsuedoId, ("-webkit-datetime-edit-ampm
-field", AtomicString::ConstructFromLiteral)); |
46 RefPtr<DateTimeAMPMFieldElement> field = adoptRef(new DateTimeAMPMFieldEleme
nt(document, fieldOwner, ampmLabels)); | 46 RefPtr<DateTimeAMPMFieldElement> field = adoptRef(new DateTimeAMPMFieldEleme
nt(document, fieldOwner, ampmLabels)); |
47 field->initialize(ampmPsuedoId, AXAMPMFieldText()); | 47 field->initialize(ampmPsuedoId, AXAMPMFieldText()); |
48 return field.release(); | 48 return field.release(); |
49 } | 49 } |
50 | 50 |
51 void DateTimeAMPMFieldElement::populateDateTimeFieldsState(DateTimeFieldsState&
dateTimeFieldsState) | 51 void DateTimeAMPMFieldElement::populateDateTimeFieldsState(DateTimeFieldsState&
dateTimeFieldsState) |
52 { | 52 { |
53 if (hasValue()) | 53 if (hasValue()) |
(...skipping 10 matching lines...) Expand all Loading... |
64 void DateTimeAMPMFieldElement::setValueAsDateTimeFieldsState(const DateTimeField
sState& dateTimeFieldsState) | 64 void DateTimeAMPMFieldElement::setValueAsDateTimeFieldsState(const DateTimeField
sState& dateTimeFieldsState) |
65 { | 65 { |
66 if (dateTimeFieldsState.hasAMPM()) | 66 if (dateTimeFieldsState.hasAMPM()) |
67 setValueAsInteger(dateTimeFieldsState.ampm()); | 67 setValueAsInteger(dateTimeFieldsState.ampm()); |
68 else | 68 else |
69 setEmptyValue(); | 69 setEmptyValue(); |
70 } | 70 } |
71 | 71 |
72 // ---------------------------- | 72 // ---------------------------- |
73 | 73 |
74 DateTimeDayFieldElement::DateTimeDayFieldElement(Document* document, FieldOwner&
fieldOwner, const String& placeholder, const Range& range) | 74 DateTimeDayFieldElement::DateTimeDayFieldElement(Document& document, FieldOwner&
fieldOwner, const String& placeholder, const Range& range) |
75 : DateTimeNumericFieldElement(document, fieldOwner, range, Range(1, 31), pla
ceholder) | 75 : DateTimeNumericFieldElement(document, fieldOwner, range, Range(1, 31), pla
ceholder) |
76 { | 76 { |
77 } | 77 } |
78 | 78 |
79 PassRefPtr<DateTimeDayFieldElement> DateTimeDayFieldElement::create(Document* do
cument, FieldOwner& fieldOwner, const String& placeholder, const Range& range) | 79 PassRefPtr<DateTimeDayFieldElement> DateTimeDayFieldElement::create(Document& do
cument, FieldOwner& fieldOwner, const String& placeholder, const Range& range) |
80 { | 80 { |
81 DEFINE_STATIC_LOCAL(AtomicString, dayPsuedoId, ("-webkit-datetime-edit-day-f
ield", AtomicString::ConstructFromLiteral)); | 81 DEFINE_STATIC_LOCAL(AtomicString, dayPsuedoId, ("-webkit-datetime-edit-day-f
ield", AtomicString::ConstructFromLiteral)); |
82 RefPtr<DateTimeDayFieldElement> field = adoptRef(new DateTimeDayFieldElement
(document, fieldOwner, placeholder.isEmpty() ? "--" : placeholder, range)); | 82 RefPtr<DateTimeDayFieldElement> field = adoptRef(new DateTimeDayFieldElement
(document, fieldOwner, placeholder.isEmpty() ? "--" : placeholder, range)); |
83 field->initialize(dayPsuedoId, AXDayOfMonthFieldText()); | 83 field->initialize(dayPsuedoId, AXDayOfMonthFieldText()); |
84 return field.release(); | 84 return field.release(); |
85 } | 85 } |
86 | 86 |
87 void DateTimeDayFieldElement::populateDateTimeFieldsState(DateTimeFieldsState& d
ateTimeFieldsState) | 87 void DateTimeDayFieldElement::populateDateTimeFieldsState(DateTimeFieldsState& d
ateTimeFieldsState) |
88 { | 88 { |
89 dateTimeFieldsState.setDayOfMonth(hasValue() ? valueAsInteger() : DateTimeFi
eldsState::emptyValue); | 89 dateTimeFieldsState.setDayOfMonth(hasValue() ? valueAsInteger() : DateTimeFi
eldsState::emptyValue); |
(...skipping 15 matching lines...) Expand all Loading... |
105 if (range().isInRange(static_cast<int>(value))) { | 105 if (range().isInRange(static_cast<int>(value))) { |
106 setValueAsInteger(value); | 106 setValueAsInteger(value); |
107 return; | 107 return; |
108 } | 108 } |
109 | 109 |
110 setEmptyValue(); | 110 setEmptyValue(); |
111 } | 111 } |
112 | 112 |
113 // ---------------------------- | 113 // ---------------------------- |
114 | 114 |
115 DateTimeHourFieldElementBase::DateTimeHourFieldElementBase(Document* document, F
ieldOwner& fieldOwner, const Range& range, const Range& hardLimits, const Step&
step) | 115 DateTimeHourFieldElementBase::DateTimeHourFieldElementBase(Document& document, F
ieldOwner& fieldOwner, const Range& range, const Range& hardLimits, const Step&
step) |
116 : DateTimeNumericFieldElement(document, fieldOwner, range, hardLimits, "--",
step) | 116 : DateTimeNumericFieldElement(document, fieldOwner, range, hardLimits, "--",
step) |
117 { | 117 { |
118 } | 118 } |
119 | 119 |
120 void DateTimeHourFieldElementBase::initialize() | 120 void DateTimeHourFieldElementBase::initialize() |
121 { | 121 { |
122 DEFINE_STATIC_LOCAL(AtomicString, hourPsuedoId, ("-webkit-datetime-edit-hour
-field", AtomicString::ConstructFromLiteral)); | 122 DEFINE_STATIC_LOCAL(AtomicString, hourPsuedoId, ("-webkit-datetime-edit-hour
-field", AtomicString::ConstructFromLiteral)); |
123 DateTimeNumericFieldElement::initialize(hourPsuedoId, AXHourFieldText()); | 123 DateTimeNumericFieldElement::initialize(hourPsuedoId, AXHourFieldText()); |
124 } | 124 } |
125 | 125 |
(...skipping 14 matching lines...) Expand all Loading... |
140 setEmptyValue(); | 140 setEmptyValue(); |
141 return; | 141 return; |
142 } | 142 } |
143 | 143 |
144 const int hour11 = hour12 == 12 ? 0 : hour12; | 144 const int hour11 = hour12 == 12 ? 0 : hour12; |
145 const int hour23 = dateTimeFieldsState.ampm() == DateTimeFieldsState::AMPMVa
luePM ? hour11 + 12 : hour11; | 145 const int hour23 = dateTimeFieldsState.ampm() == DateTimeFieldsState::AMPMVa
luePM ? hour11 + 12 : hour11; |
146 setValueAsInteger(hour23); | 146 setValueAsInteger(hour23); |
147 } | 147 } |
148 // ---------------------------- | 148 // ---------------------------- |
149 | 149 |
150 DateTimeHour11FieldElement::DateTimeHour11FieldElement(Document* document, Field
Owner& fieldOwner, const Range& range, const Step& step) | 150 DateTimeHour11FieldElement::DateTimeHour11FieldElement(Document& document, Field
Owner& fieldOwner, const Range& range, const Step& step) |
151 : DateTimeHourFieldElementBase(document, fieldOwner, range, Range(0, 11), st
ep) | 151 : DateTimeHourFieldElementBase(document, fieldOwner, range, Range(0, 11), st
ep) |
152 { | 152 { |
153 } | 153 } |
154 | 154 |
155 PassRefPtr<DateTimeHour11FieldElement> DateTimeHour11FieldElement::create(Docume
nt* document, FieldOwner& fieldOwner, const Range& hour23Range, const Step& step
) | 155 PassRefPtr<DateTimeHour11FieldElement> DateTimeHour11FieldElement::create(Docume
nt& document, FieldOwner& fieldOwner, const Range& hour23Range, const Step& step
) |
156 { | 156 { |
157 ASSERT(hour23Range.minimum >= 0); | 157 ASSERT(hour23Range.minimum >= 0); |
158 ASSERT(hour23Range.maximum <= 23); | 158 ASSERT(hour23Range.maximum <= 23); |
159 ASSERT(hour23Range.minimum <= hour23Range.maximum); | 159 ASSERT(hour23Range.minimum <= hour23Range.maximum); |
160 Range range(0, 11); | 160 Range range(0, 11); |
161 if (hour23Range.maximum < 12) | 161 if (hour23Range.maximum < 12) |
162 range = hour23Range; | 162 range = hour23Range; |
163 else if (hour23Range.minimum >= 12) { | 163 else if (hour23Range.minimum >= 12) { |
164 range.minimum = hour23Range.minimum - 12; | 164 range.minimum = hour23Range.minimum - 12; |
165 range.maximum = hour23Range.maximum - 12; | 165 range.maximum = hour23Range.maximum - 12; |
(...skipping 15 matching lines...) Expand all Loading... |
181 } | 181 } |
182 | 182 |
183 void DateTimeHour11FieldElement::setValueAsInteger(int value, EventBehavior even
tBehavior) | 183 void DateTimeHour11FieldElement::setValueAsInteger(int value, EventBehavior even
tBehavior) |
184 { | 184 { |
185 value = Range(0, 23).clampValue(value) % 12; | 185 value = Range(0, 23).clampValue(value) % 12; |
186 DateTimeNumericFieldElement::setValueAsInteger(value, eventBehavior); | 186 DateTimeNumericFieldElement::setValueAsInteger(value, eventBehavior); |
187 } | 187 } |
188 | 188 |
189 // ---------------------------- | 189 // ---------------------------- |
190 | 190 |
191 DateTimeHour12FieldElement::DateTimeHour12FieldElement(Document* document, Field
Owner& fieldOwner, const Range& range, const Step& step) | 191 DateTimeHour12FieldElement::DateTimeHour12FieldElement(Document& document, Field
Owner& fieldOwner, const Range& range, const Step& step) |
192 : DateTimeHourFieldElementBase(document, fieldOwner, range, Range(1, 12), st
ep) | 192 : DateTimeHourFieldElementBase(document, fieldOwner, range, Range(1, 12), st
ep) |
193 { | 193 { |
194 } | 194 } |
195 | 195 |
196 PassRefPtr<DateTimeHour12FieldElement> DateTimeHour12FieldElement::create(Docume
nt* document, FieldOwner& fieldOwner, const Range& hour23Range, const Step& step
) | 196 PassRefPtr<DateTimeHour12FieldElement> DateTimeHour12FieldElement::create(Docume
nt& document, FieldOwner& fieldOwner, const Range& hour23Range, const Step& step
) |
197 { | 197 { |
198 ASSERT(hour23Range.minimum >= 0); | 198 ASSERT(hour23Range.minimum >= 0); |
199 ASSERT(hour23Range.maximum <= 23); | 199 ASSERT(hour23Range.maximum <= 23); |
200 ASSERT(hour23Range.minimum <= hour23Range.maximum); | 200 ASSERT(hour23Range.minimum <= hour23Range.maximum); |
201 Range range(1, 12); | 201 Range range(1, 12); |
202 if (hour23Range.maximum < 12) | 202 if (hour23Range.maximum < 12) |
203 range = hour23Range; | 203 range = hour23Range; |
204 else if (hour23Range.minimum >= 12) { | 204 else if (hour23Range.minimum >= 12) { |
205 range.minimum = hour23Range.minimum - 12; | 205 range.minimum = hour23Range.minimum - 12; |
206 range.maximum = hour23Range.maximum - 12; | 206 range.maximum = hour23Range.maximum - 12; |
(...skipping 17 matching lines...) Expand all Loading... |
224 } | 224 } |
225 | 225 |
226 void DateTimeHour12FieldElement::setValueAsInteger(int value, EventBehavior even
tBehavior) | 226 void DateTimeHour12FieldElement::setValueAsInteger(int value, EventBehavior even
tBehavior) |
227 { | 227 { |
228 value = Range(0, 24).clampValue(value) % 12; | 228 value = Range(0, 24).clampValue(value) % 12; |
229 DateTimeNumericFieldElement::setValueAsInteger(value ? value : 12, eventBeha
vior); | 229 DateTimeNumericFieldElement::setValueAsInteger(value ? value : 12, eventBeha
vior); |
230 } | 230 } |
231 | 231 |
232 // ---------------------------- | 232 // ---------------------------- |
233 | 233 |
234 DateTimeHour23FieldElement::DateTimeHour23FieldElement(Document* document, Field
Owner& fieldOwner, const Range& range, const Step& step) | 234 DateTimeHour23FieldElement::DateTimeHour23FieldElement(Document& document, Field
Owner& fieldOwner, const Range& range, const Step& step) |
235 : DateTimeHourFieldElementBase(document, fieldOwner, range, Range(0, 23), st
ep) | 235 : DateTimeHourFieldElementBase(document, fieldOwner, range, Range(0, 23), st
ep) |
236 { | 236 { |
237 } | 237 } |
238 | 238 |
239 PassRefPtr<DateTimeHour23FieldElement> DateTimeHour23FieldElement::create(Docume
nt* document, FieldOwner& fieldOwner, const Range& hour23Range, const Step& step
) | 239 PassRefPtr<DateTimeHour23FieldElement> DateTimeHour23FieldElement::create(Docume
nt& document, FieldOwner& fieldOwner, const Range& hour23Range, const Step& step
) |
240 { | 240 { |
241 ASSERT(hour23Range.minimum >= 0); | 241 ASSERT(hour23Range.minimum >= 0); |
242 ASSERT(hour23Range.maximum <= 23); | 242 ASSERT(hour23Range.maximum <= 23); |
243 ASSERT(hour23Range.minimum <= hour23Range.maximum); | 243 ASSERT(hour23Range.minimum <= hour23Range.maximum); |
244 RefPtr<DateTimeHour23FieldElement> field = adoptRef(new DateTimeHour23FieldE
lement(document, fieldOwner, hour23Range, step)); | 244 RefPtr<DateTimeHour23FieldElement> field = adoptRef(new DateTimeHour23FieldE
lement(document, fieldOwner, hour23Range, step)); |
245 field->initialize(); | 245 field->initialize(); |
246 return field.release(); | 246 return field.release(); |
247 } | 247 } |
248 | 248 |
249 void DateTimeHour23FieldElement::populateDateTimeFieldsState(DateTimeFieldsState
& dateTimeFieldsState) | 249 void DateTimeHour23FieldElement::populateDateTimeFieldsState(DateTimeFieldsState
& dateTimeFieldsState) |
(...skipping 10 matching lines...) Expand all Loading... |
260 } | 260 } |
261 | 261 |
262 void DateTimeHour23FieldElement::setValueAsInteger(int value, EventBehavior even
tBehavior) | 262 void DateTimeHour23FieldElement::setValueAsInteger(int value, EventBehavior even
tBehavior) |
263 { | 263 { |
264 value = Range(0, 23).clampValue(value); | 264 value = Range(0, 23).clampValue(value); |
265 DateTimeNumericFieldElement::setValueAsInteger(value, eventBehavior); | 265 DateTimeNumericFieldElement::setValueAsInteger(value, eventBehavior); |
266 } | 266 } |
267 | 267 |
268 // ---------------------------- | 268 // ---------------------------- |
269 | 269 |
270 DateTimeHour24FieldElement::DateTimeHour24FieldElement(Document* document, Field
Owner& fieldOwner, const Range& range, const Step& step) | 270 DateTimeHour24FieldElement::DateTimeHour24FieldElement(Document& document, Field
Owner& fieldOwner, const Range& range, const Step& step) |
271 : DateTimeHourFieldElementBase(document, fieldOwner, range, Range(1, 24), st
ep) | 271 : DateTimeHourFieldElementBase(document, fieldOwner, range, Range(1, 24), st
ep) |
272 { | 272 { |
273 } | 273 } |
274 | 274 |
275 PassRefPtr<DateTimeHour24FieldElement> DateTimeHour24FieldElement::create(Docume
nt* document, FieldOwner& fieldOwner, const Range& hour23Range, const Step& step
) | 275 PassRefPtr<DateTimeHour24FieldElement> DateTimeHour24FieldElement::create(Docume
nt& document, FieldOwner& fieldOwner, const Range& hour23Range, const Step& step
) |
276 { | 276 { |
277 ASSERT(hour23Range.minimum >= 0); | 277 ASSERT(hour23Range.minimum >= 0); |
278 ASSERT(hour23Range.maximum <= 23); | 278 ASSERT(hour23Range.maximum <= 23); |
279 ASSERT(hour23Range.minimum <= hour23Range.maximum); | 279 ASSERT(hour23Range.minimum <= hour23Range.maximum); |
280 Range range(hour23Range.minimum ? hour23Range.minimum : 24, hour23Range.maxi
mum ? hour23Range.maximum : 24); | 280 Range range(hour23Range.minimum ? hour23Range.minimum : 24, hour23Range.maxi
mum ? hour23Range.maximum : 24); |
281 if (range.minimum > range.maximum) { | 281 if (range.minimum > range.maximum) { |
282 range.minimum = 1; | 282 range.minimum = 1; |
283 range.maximum = 24; | 283 range.maximum = 24; |
284 } | 284 } |
285 | 285 |
(...skipping 21 matching lines...) Expand all Loading... |
307 } | 307 } |
308 | 308 |
309 void DateTimeHour24FieldElement::setValueAsInteger(int value, EventBehavior even
tBehavior) | 309 void DateTimeHour24FieldElement::setValueAsInteger(int value, EventBehavior even
tBehavior) |
310 { | 310 { |
311 value = Range(0, 24).clampValue(value); | 311 value = Range(0, 24).clampValue(value); |
312 DateTimeNumericFieldElement::setValueAsInteger(value ? value : 24, eventBeha
vior); | 312 DateTimeNumericFieldElement::setValueAsInteger(value ? value : 24, eventBeha
vior); |
313 } | 313 } |
314 | 314 |
315 // ---------------------------- | 315 // ---------------------------- |
316 | 316 |
317 DateTimeMillisecondFieldElement::DateTimeMillisecondFieldElement(Document* docum
ent, FieldOwner& fieldOwner, const Range& range, const Step& step) | 317 DateTimeMillisecondFieldElement::DateTimeMillisecondFieldElement(Document& docum
ent, FieldOwner& fieldOwner, const Range& range, const Step& step) |
318 : DateTimeNumericFieldElement(document, fieldOwner, range, Range(0, 999), "-
--", step) | 318 : DateTimeNumericFieldElement(document, fieldOwner, range, Range(0, 999), "-
--", step) |
319 { | 319 { |
320 } | 320 } |
321 | 321 |
322 PassRefPtr<DateTimeMillisecondFieldElement> DateTimeMillisecondFieldElement::cre
ate(Document* document, FieldOwner& fieldOwner, const Range& range, const Step&
step) | 322 PassRefPtr<DateTimeMillisecondFieldElement> DateTimeMillisecondFieldElement::cre
ate(Document& document, FieldOwner& fieldOwner, const Range& range, const Step&
step) |
323 { | 323 { |
324 DEFINE_STATIC_LOCAL(AtomicString, millisecondPsuedoId, ("-webkit-datetime-ed
it-millisecond-field", AtomicString::ConstructFromLiteral)); | 324 DEFINE_STATIC_LOCAL(AtomicString, millisecondPsuedoId, ("-webkit-datetime-ed
it-millisecond-field", AtomicString::ConstructFromLiteral)); |
325 RefPtr<DateTimeMillisecondFieldElement> field = adoptRef(new DateTimeMillise
condFieldElement(document, fieldOwner, range, step)); | 325 RefPtr<DateTimeMillisecondFieldElement> field = adoptRef(new DateTimeMillise
condFieldElement(document, fieldOwner, range, step)); |
326 field->initialize(millisecondPsuedoId, AXMillisecondFieldText()); | 326 field->initialize(millisecondPsuedoId, AXMillisecondFieldText()); |
327 return field.release(); | 327 return field.release(); |
328 } | 328 } |
329 | 329 |
330 void DateTimeMillisecondFieldElement::populateDateTimeFieldsState(DateTimeFields
State& dateTimeFieldsState) | 330 void DateTimeMillisecondFieldElement::populateDateTimeFieldsState(DateTimeFields
State& dateTimeFieldsState) |
331 { | 331 { |
332 dateTimeFieldsState.setMillisecond(hasValue() ? valueAsInteger() : DateTimeF
ieldsState::emptyValue); | 332 dateTimeFieldsState.setMillisecond(hasValue() ? valueAsInteger() : DateTimeF
ieldsState::emptyValue); |
(...skipping 15 matching lines...) Expand all Loading... |
348 if (value > static_cast<unsigned>(maximum())) { | 348 if (value > static_cast<unsigned>(maximum())) { |
349 setEmptyValue(); | 349 setEmptyValue(); |
350 return; | 350 return; |
351 } | 351 } |
352 | 352 |
353 setValueAsInteger(value); | 353 setValueAsInteger(value); |
354 } | 354 } |
355 | 355 |
356 // ---------------------------- | 356 // ---------------------------- |
357 | 357 |
358 DateTimeMinuteFieldElement::DateTimeMinuteFieldElement(Document* document, Field
Owner& fieldOwner, const Range& range, const Step& step) | 358 DateTimeMinuteFieldElement::DateTimeMinuteFieldElement(Document& document, Field
Owner& fieldOwner, const Range& range, const Step& step) |
359 : DateTimeNumericFieldElement(document, fieldOwner, range, Range(0, 59), "--
", step) | 359 : DateTimeNumericFieldElement(document, fieldOwner, range, Range(0, 59), "--
", step) |
360 { | 360 { |
361 } | 361 } |
362 | 362 |
363 PassRefPtr<DateTimeMinuteFieldElement> DateTimeMinuteFieldElement::create(Docume
nt* document, FieldOwner& fieldOwner, const Range& range, const Step& step) | 363 PassRefPtr<DateTimeMinuteFieldElement> DateTimeMinuteFieldElement::create(Docume
nt& document, FieldOwner& fieldOwner, const Range& range, const Step& step) |
364 { | 364 { |
365 DEFINE_STATIC_LOCAL(AtomicString, minutePsuedoId, ("-webkit-datetime-edit-mi
nute-field", AtomicString::ConstructFromLiteral)); | 365 DEFINE_STATIC_LOCAL(AtomicString, minutePsuedoId, ("-webkit-datetime-edit-mi
nute-field", AtomicString::ConstructFromLiteral)); |
366 RefPtr<DateTimeMinuteFieldElement> field = adoptRef(new DateTimeMinuteFieldE
lement(document, fieldOwner, range, step)); | 366 RefPtr<DateTimeMinuteFieldElement> field = adoptRef(new DateTimeMinuteFieldE
lement(document, fieldOwner, range, step)); |
367 field->initialize(minutePsuedoId, AXMinuteFieldText()); | 367 field->initialize(minutePsuedoId, AXMinuteFieldText()); |
368 return field.release(); | 368 return field.release(); |
369 } | 369 } |
370 | 370 |
371 void DateTimeMinuteFieldElement::populateDateTimeFieldsState(DateTimeFieldsState
& dateTimeFieldsState) | 371 void DateTimeMinuteFieldElement::populateDateTimeFieldsState(DateTimeFieldsState
& dateTimeFieldsState) |
372 { | 372 { |
373 dateTimeFieldsState.setMinute(hasValue() ? valueAsInteger() : DateTimeFields
State::emptyValue); | 373 dateTimeFieldsState.setMinute(hasValue() ? valueAsInteger() : DateTimeFields
State::emptyValue); |
(...skipping 15 matching lines...) Expand all Loading... |
389 if (value > static_cast<unsigned>(maximum())) { | 389 if (value > static_cast<unsigned>(maximum())) { |
390 setEmptyValue(); | 390 setEmptyValue(); |
391 return; | 391 return; |
392 } | 392 } |
393 | 393 |
394 setValueAsInteger(value); | 394 setValueAsInteger(value); |
395 } | 395 } |
396 | 396 |
397 // ---------------------------- | 397 // ---------------------------- |
398 | 398 |
399 DateTimeMonthFieldElement::DateTimeMonthFieldElement(Document* document, FieldOw
ner& fieldOwner, const String& placeholder, const Range& range) | 399 DateTimeMonthFieldElement::DateTimeMonthFieldElement(Document& document, FieldOw
ner& fieldOwner, const String& placeholder, const Range& range) |
400 : DateTimeNumericFieldElement(document, fieldOwner, range, Range(1, 12), pla
ceholder) | 400 : DateTimeNumericFieldElement(document, fieldOwner, range, Range(1, 12), pla
ceholder) |
401 { | 401 { |
402 } | 402 } |
403 | 403 |
404 PassRefPtr<DateTimeMonthFieldElement> DateTimeMonthFieldElement::create(Document
* document, FieldOwner& fieldOwner, const String& placeholder, const Range& rang
e) | 404 PassRefPtr<DateTimeMonthFieldElement> DateTimeMonthFieldElement::create(Document
& document, FieldOwner& fieldOwner, const String& placeholder, const Range& rang
e) |
405 { | 405 { |
406 DEFINE_STATIC_LOCAL(AtomicString, monthPsuedoId, ("-webkit-datetime-edit-mon
th-field", AtomicString::ConstructFromLiteral)); | 406 DEFINE_STATIC_LOCAL(AtomicString, monthPsuedoId, ("-webkit-datetime-edit-mon
th-field", AtomicString::ConstructFromLiteral)); |
407 RefPtr<DateTimeMonthFieldElement> field = adoptRef(new DateTimeMonthFieldEle
ment(document, fieldOwner, placeholder.isEmpty() ? "--" : placeholder, range)); | 407 RefPtr<DateTimeMonthFieldElement> field = adoptRef(new DateTimeMonthFieldEle
ment(document, fieldOwner, placeholder.isEmpty() ? "--" : placeholder, range)); |
408 field->initialize(monthPsuedoId, AXMonthFieldText()); | 408 field->initialize(monthPsuedoId, AXMonthFieldText()); |
409 return field.release(); | 409 return field.release(); |
410 } | 410 } |
411 | 411 |
412 void DateTimeMonthFieldElement::populateDateTimeFieldsState(DateTimeFieldsState&
dateTimeFieldsState) | 412 void DateTimeMonthFieldElement::populateDateTimeFieldsState(DateTimeFieldsState&
dateTimeFieldsState) |
413 { | 413 { |
414 dateTimeFieldsState.setMonth(hasValue() ? valueAsInteger() : DateTimeFieldsS
tate::emptyValue); | 414 dateTimeFieldsState.setMonth(hasValue() ? valueAsInteger() : DateTimeFieldsS
tate::emptyValue); |
(...skipping 15 matching lines...) Expand all Loading... |
430 if (range().isInRange(static_cast<int>(value))) { | 430 if (range().isInRange(static_cast<int>(value))) { |
431 setValueAsInteger(value); | 431 setValueAsInteger(value); |
432 return; | 432 return; |
433 } | 433 } |
434 | 434 |
435 setEmptyValue(); | 435 setEmptyValue(); |
436 } | 436 } |
437 | 437 |
438 // ---------------------------- | 438 // ---------------------------- |
439 | 439 |
440 DateTimeSecondFieldElement::DateTimeSecondFieldElement(Document* document, Field
Owner& fieldOwner, const Range& range, const Step& step) | 440 DateTimeSecondFieldElement::DateTimeSecondFieldElement(Document& document, Field
Owner& fieldOwner, const Range& range, const Step& step) |
441 : DateTimeNumericFieldElement(document, fieldOwner, range, Range(0, 59), "--
", step) | 441 : DateTimeNumericFieldElement(document, fieldOwner, range, Range(0, 59), "--
", step) |
442 { | 442 { |
443 } | 443 } |
444 | 444 |
445 PassRefPtr<DateTimeSecondFieldElement> DateTimeSecondFieldElement::create(Docume
nt* document, FieldOwner& fieldOwner, const Range& range, const Step& step) | 445 PassRefPtr<DateTimeSecondFieldElement> DateTimeSecondFieldElement::create(Docume
nt& document, FieldOwner& fieldOwner, const Range& range, const Step& step) |
446 { | 446 { |
447 DEFINE_STATIC_LOCAL(AtomicString, secondPsuedoId, ("-webkit-datetime-edit-se
cond-field", AtomicString::ConstructFromLiteral)); | 447 DEFINE_STATIC_LOCAL(AtomicString, secondPsuedoId, ("-webkit-datetime-edit-se
cond-field", AtomicString::ConstructFromLiteral)); |
448 RefPtr<DateTimeSecondFieldElement> field = adoptRef(new DateTimeSecondFieldE
lement(document, fieldOwner, range, step)); | 448 RefPtr<DateTimeSecondFieldElement> field = adoptRef(new DateTimeSecondFieldE
lement(document, fieldOwner, range, step)); |
449 field->initialize(secondPsuedoId, AXSecondFieldText()); | 449 field->initialize(secondPsuedoId, AXSecondFieldText()); |
450 return field.release(); | 450 return field.release(); |
451 } | 451 } |
452 | 452 |
453 void DateTimeSecondFieldElement::populateDateTimeFieldsState(DateTimeFieldsState
& dateTimeFieldsState) | 453 void DateTimeSecondFieldElement::populateDateTimeFieldsState(DateTimeFieldsState
& dateTimeFieldsState) |
454 { | 454 { |
455 dateTimeFieldsState.setSecond(hasValue() ? valueAsInteger() : DateTimeFields
State::emptyValue); | 455 dateTimeFieldsState.setSecond(hasValue() ? valueAsInteger() : DateTimeFields
State::emptyValue); |
(...skipping 15 matching lines...) Expand all Loading... |
471 if (value > static_cast<unsigned>(maximum())) { | 471 if (value > static_cast<unsigned>(maximum())) { |
472 setEmptyValue(); | 472 setEmptyValue(); |
473 return; | 473 return; |
474 } | 474 } |
475 | 475 |
476 setValueAsInteger(value); | 476 setValueAsInteger(value); |
477 } | 477 } |
478 | 478 |
479 // ---------------------------- | 479 // ---------------------------- |
480 | 480 |
481 DateTimeSymbolicMonthFieldElement::DateTimeSymbolicMonthFieldElement(Document* d
ocument, FieldOwner& fieldOwner, const Vector<String>& labels, int minimum, int
maximum) | 481 DateTimeSymbolicMonthFieldElement::DateTimeSymbolicMonthFieldElement(Document& d
ocument, FieldOwner& fieldOwner, const Vector<String>& labels, int minimum, int
maximum) |
482 : DateTimeSymbolicFieldElement(document, fieldOwner, labels, minimum, maximu
m) | 482 : DateTimeSymbolicFieldElement(document, fieldOwner, labels, minimum, maximu
m) |
483 { | 483 { |
484 } | 484 } |
485 | 485 |
486 PassRefPtr<DateTimeSymbolicMonthFieldElement> DateTimeSymbolicMonthFieldElement:
:create(Document* document, FieldOwner& fieldOwner, const Vector<String>& labels
, int minimum, int maximum) | 486 PassRefPtr<DateTimeSymbolicMonthFieldElement> DateTimeSymbolicMonthFieldElement:
:create(Document& document, FieldOwner& fieldOwner, const Vector<String>& labels
, int minimum, int maximum) |
487 { | 487 { |
488 DEFINE_STATIC_LOCAL(AtomicString, monthPsuedoId, ("-webkit-datetime-edit-mon
th-field", AtomicString::ConstructFromLiteral)); | 488 DEFINE_STATIC_LOCAL(AtomicString, monthPsuedoId, ("-webkit-datetime-edit-mon
th-field", AtomicString::ConstructFromLiteral)); |
489 RefPtr<DateTimeSymbolicMonthFieldElement> field = adoptRef(new DateTimeSymbo
licMonthFieldElement(document, fieldOwner, labels, minimum, maximum)); | 489 RefPtr<DateTimeSymbolicMonthFieldElement> field = adoptRef(new DateTimeSymbo
licMonthFieldElement(document, fieldOwner, labels, minimum, maximum)); |
490 field->initialize(monthPsuedoId, AXMonthFieldText()); | 490 field->initialize(monthPsuedoId, AXMonthFieldText()); |
491 return field.release(); | 491 return field.release(); |
492 } | 492 } |
493 | 493 |
494 void DateTimeSymbolicMonthFieldElement::populateDateTimeFieldsState(DateTimeFiel
dsState& dateTimeFieldsState) | 494 void DateTimeSymbolicMonthFieldElement::populateDateTimeFieldsState(DateTimeFiel
dsState& dateTimeFieldsState) |
495 { | 495 { |
496 if (!hasValue()) | 496 if (!hasValue()) |
(...skipping 18 matching lines...) Expand all Loading... |
515 if (value >= symbolsSize()) { | 515 if (value >= symbolsSize()) { |
516 setEmptyValue(); | 516 setEmptyValue(); |
517 return; | 517 return; |
518 } | 518 } |
519 | 519 |
520 setValueAsInteger(value); | 520 setValueAsInteger(value); |
521 } | 521 } |
522 | 522 |
523 // ---------------------------- | 523 // ---------------------------- |
524 | 524 |
525 DateTimeWeekFieldElement::DateTimeWeekFieldElement(Document* document, FieldOwne
r& fieldOwner, const Range& range) | 525 DateTimeWeekFieldElement::DateTimeWeekFieldElement(Document& document, FieldOwne
r& fieldOwner, const Range& range) |
526 : DateTimeNumericFieldElement(document, fieldOwner, range, Range(DateCompone
nts::minimumWeekNumber, DateComponents::maximumWeekNumber), "--") | 526 : DateTimeNumericFieldElement(document, fieldOwner, range, Range(DateCompone
nts::minimumWeekNumber, DateComponents::maximumWeekNumber), "--") |
527 { | 527 { |
528 } | 528 } |
529 | 529 |
530 PassRefPtr<DateTimeWeekFieldElement> DateTimeWeekFieldElement::create(Document*
document, FieldOwner& fieldOwner, const Range& range) | 530 PassRefPtr<DateTimeWeekFieldElement> DateTimeWeekFieldElement::create(Document&
document, FieldOwner& fieldOwner, const Range& range) |
531 { | 531 { |
532 DEFINE_STATIC_LOCAL(AtomicString, weekPsuedoId, ("-webkit-datetime-edit-week
-field", AtomicString::ConstructFromLiteral)); | 532 DEFINE_STATIC_LOCAL(AtomicString, weekPsuedoId, ("-webkit-datetime-edit-week
-field", AtomicString::ConstructFromLiteral)); |
533 RefPtr<DateTimeWeekFieldElement> field = adoptRef(new DateTimeWeekFieldEleme
nt(document, fieldOwner, range)); | 533 RefPtr<DateTimeWeekFieldElement> field = adoptRef(new DateTimeWeekFieldEleme
nt(document, fieldOwner, range)); |
534 field->initialize(weekPsuedoId, AXWeekOfYearFieldText()); | 534 field->initialize(weekPsuedoId, AXWeekOfYearFieldText()); |
535 return field.release(); | 535 return field.release(); |
536 } | 536 } |
537 | 537 |
538 void DateTimeWeekFieldElement::populateDateTimeFieldsState(DateTimeFieldsState&
dateTimeFieldsState) | 538 void DateTimeWeekFieldElement::populateDateTimeFieldsState(DateTimeFieldsState&
dateTimeFieldsState) |
539 { | 539 { |
540 dateTimeFieldsState.setWeekOfYear(hasValue() ? valueAsInteger() : DateTimeFi
eldsState::emptyValue); | 540 dateTimeFieldsState.setWeekOfYear(hasValue() ? valueAsInteger() : DateTimeFi
eldsState::emptyValue); |
(...skipping 15 matching lines...) Expand all Loading... |
556 if (range().isInRange(static_cast<int>(value))) { | 556 if (range().isInRange(static_cast<int>(value))) { |
557 setValueAsInteger(value); | 557 setValueAsInteger(value); |
558 return; | 558 return; |
559 } | 559 } |
560 | 560 |
561 setEmptyValue(); | 561 setEmptyValue(); |
562 } | 562 } |
563 | 563 |
564 // ---------------------------- | 564 // ---------------------------- |
565 | 565 |
566 DateTimeYearFieldElement::DateTimeYearFieldElement(Document* document, FieldOwne
r& fieldOwner, const DateTimeYearFieldElement::Parameters& parameters) | 566 DateTimeYearFieldElement::DateTimeYearFieldElement(Document& document, FieldOwne
r& fieldOwner, const DateTimeYearFieldElement::Parameters& parameters) |
567 : DateTimeNumericFieldElement(document, fieldOwner, Range(parameters.minimum
Year, parameters.maximumYear), Range(DateComponents::minimumYear(), DateComponen
ts::maximumYear()), parameters.placeholder.isEmpty() ? "----" : parameters.place
holder) | 567 : DateTimeNumericFieldElement(document, fieldOwner, Range(parameters.minimum
Year, parameters.maximumYear), Range(DateComponents::minimumYear(), DateComponen
ts::maximumYear()), parameters.placeholder.isEmpty() ? "----" : parameters.place
holder) |
568 , m_minIsSpecified(parameters.minIsSpecified) | 568 , m_minIsSpecified(parameters.minIsSpecified) |
569 , m_maxIsSpecified(parameters.maxIsSpecified) | 569 , m_maxIsSpecified(parameters.maxIsSpecified) |
570 { | 570 { |
571 ASSERT(parameters.minimumYear >= DateComponents::minimumYear()); | 571 ASSERT(parameters.minimumYear >= DateComponents::minimumYear()); |
572 ASSERT(parameters.maximumYear <= DateComponents::maximumYear()); | 572 ASSERT(parameters.maximumYear <= DateComponents::maximumYear()); |
573 } | 573 } |
574 | 574 |
575 PassRefPtr<DateTimeYearFieldElement> DateTimeYearFieldElement::create(Document*
document, FieldOwner& fieldOwner, const DateTimeYearFieldElement::Parameters& pa
rameters) | 575 PassRefPtr<DateTimeYearFieldElement> DateTimeYearFieldElement::create(Document&
document, FieldOwner& fieldOwner, const DateTimeYearFieldElement::Parameters& pa
rameters) |
576 { | 576 { |
577 DEFINE_STATIC_LOCAL(AtomicString, yearPsuedoId, ("-webkit-datetime-edit-year
-field", AtomicString::ConstructFromLiteral)); | 577 DEFINE_STATIC_LOCAL(AtomicString, yearPsuedoId, ("-webkit-datetime-edit-year
-field", AtomicString::ConstructFromLiteral)); |
578 RefPtr<DateTimeYearFieldElement> field = adoptRef(new DateTimeYearFieldEleme
nt(document, fieldOwner, parameters)); | 578 RefPtr<DateTimeYearFieldElement> field = adoptRef(new DateTimeYearFieldEleme
nt(document, fieldOwner, parameters)); |
579 field->initialize(yearPsuedoId, AXYearFieldText()); | 579 field->initialize(yearPsuedoId, AXYearFieldText()); |
580 return field.release(); | 580 return field.release(); |
581 } | 581 } |
582 | 582 |
583 static int currentFullYear() | 583 static int currentFullYear() |
584 { | 584 { |
585 double current = currentTimeMS(); | 585 double current = currentTimeMS(); |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
625 setValueAsInteger(value); | 625 setValueAsInteger(value); |
626 return; | 626 return; |
627 } | 627 } |
628 | 628 |
629 setEmptyValue(); | 629 setEmptyValue(); |
630 } | 630 } |
631 | 631 |
632 } // namespace WebCore | 632 } // namespace WebCore |
633 | 633 |
634 #endif | 634 #endif |
OLD | NEW |