| 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 |