OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2010 Google Inc. All rights reserved. | 2 * Copyright (C) 2010 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 are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
180 RefPtr<HTMLInputElement> input(element()); | 180 RefPtr<HTMLInputElement> input(element()); |
181 String oldValue = input->value(); | 181 String oldValue = input->value(); |
182 String newValue = sanitizeValue(dateTimeEditElement()->value()); | 182 String newValue = sanitizeValue(dateTimeEditElement()->value()); |
183 // Even if oldValue is null and newValue is "", we should assume they are sa
me. | 183 // Even if oldValue is null and newValue is "", we should assume they are sa
me. |
184 if ((oldValue.isEmpty() && newValue.isEmpty()) || oldValue == newValue) { | 184 if ((oldValue.isEmpty() && newValue.isEmpty()) || oldValue == newValue) { |
185 input->setNeedsValidityCheck(); | 185 input->setNeedsValidityCheck(); |
186 } else { | 186 } else { |
187 input->setValueInternal(newValue, DispatchNoEvent); | 187 input->setValueInternal(newValue, DispatchNoEvent); |
188 input->setNeedsStyleRecalc(); | 188 input->setNeedsStyleRecalc(); |
189 input->dispatchFormControlInputEvent(); | 189 input->dispatchFormControlInputEvent(); |
| 190 input->dispatchFormControlChangeEvent(); |
190 } | 191 } |
191 input->notifyFormStateChanged(); | 192 input->notifyFormStateChanged(); |
192 input->updateClearButtonVisibility(); | 193 input->updateClearButtonVisibility(); |
193 } | 194 } |
194 | 195 |
195 bool BaseMultipleFieldsDateAndTimeInputType::hasCustomFocusLogic() const | 196 bool BaseMultipleFieldsDateAndTimeInputType::hasCustomFocusLogic() const |
196 { | 197 { |
197 return false; | 198 return false; |
198 } | 199 } |
199 | 200 |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
256 return; | 257 return; |
257 } | 258 } |
258 | 259 |
259 DateTimeEditElement* edit = this->dateTimeEditElement(); | 260 DateTimeEditElement* edit = this->dateTimeEditElement(); |
260 if (!edit) | 261 if (!edit) |
261 return; | 262 return; |
262 DateComponents date; | 263 DateComponents date; |
263 unsigned end; | 264 unsigned end; |
264 if (date.parseDate(value, 0, end) && end == value.length()) | 265 if (date.parseDate(value, 0, end) && end == value.length()) |
265 edit->setOnlyYearMonthDay(date); | 266 edit->setOnlyYearMonthDay(date); |
266 element().dispatchFormControlChangeEvent(); | |
267 } | 267 } |
268 | 268 |
269 void BaseMultipleFieldsDateAndTimeInputType::pickerIndicatorChooseValue(double v
alue) | 269 void BaseMultipleFieldsDateAndTimeInputType::pickerIndicatorChooseValue(double v
alue) |
270 { | 270 { |
271 ASSERT(std::isfinite(value) || std::isnan(value)); | 271 ASSERT(std::isfinite(value) || std::isnan(value)); |
272 if (std::isnan(value)) | 272 if (std::isnan(value)) |
273 element().setValue(emptyString(), DispatchInputAndChangeEvent); | 273 element().setValue(emptyString(), DispatchInputAndChangeEvent); |
274 else | 274 else |
275 element().setValueAsNumber(value, ASSERT_NO_EXCEPTION, DispatchInputAndC
hangeEvent); | 275 element().setValueAsNumber(value, ASSERT_NO_EXCEPTION, DispatchInputAndC
hangeEvent); |
276 } | 276 } |
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
441 { | 441 { |
442 DateTimeEditElement* edit = dateTimeEditElement(); | 442 DateTimeEditElement* edit = dateTimeEditElement(); |
443 return element().value().isEmpty() && edit && edit->anyEditableFieldsHaveVal
ues(); | 443 return element().value().isEmpty() && edit && edit->anyEditableFieldsHaveVal
ues(); |
444 } | 444 } |
445 | 445 |
446 AtomicString BaseMultipleFieldsDateAndTimeInputType::localeIdentifier() const | 446 AtomicString BaseMultipleFieldsDateAndTimeInputType::localeIdentifier() const |
447 { | 447 { |
448 return element().computeInheritedLanguage(); | 448 return element().computeInheritedLanguage(); |
449 } | 449 } |
450 | 450 |
451 void BaseMultipleFieldsDateAndTimeInputType::editControlDidChangeValueByKeyboard
() | |
452 { | |
453 element().dispatchFormControlChangeEvent(); | |
454 } | |
455 | |
456 void BaseMultipleFieldsDateAndTimeInputType::minOrMaxAttributeChanged() | 451 void BaseMultipleFieldsDateAndTimeInputType::minOrMaxAttributeChanged() |
457 { | 452 { |
458 updateView(); | 453 updateView(); |
459 } | 454 } |
460 | 455 |
461 void BaseMultipleFieldsDateAndTimeInputType::readonlyAttributeChanged() | 456 void BaseMultipleFieldsDateAndTimeInputType::readonlyAttributeChanged() |
462 { | 457 { |
463 spinButtonElement()->releaseCapture(); | 458 spinButtonElement()->releaseCapture(); |
464 clearButtonElement()->releaseCapture(); | 459 clearButtonElement()->releaseCapture(); |
465 if (DateTimeEditElement* edit = dateTimeEditElement()) | 460 if (DateTimeEditElement* edit = dateTimeEditElement()) |
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
612 clearButton->setInlineStyleProperty(CSSPropertyPointerEvents, CSSValueNo
ne); | 607 clearButton->setInlineStyleProperty(CSSPropertyPointerEvents, CSSValueNo
ne); |
613 } else { | 608 } else { |
614 clearButton->removeInlineStyleProperty(CSSPropertyOpacity); | 609 clearButton->removeInlineStyleProperty(CSSPropertyOpacity); |
615 clearButton->removeInlineStyleProperty(CSSPropertyPointerEvents); | 610 clearButton->removeInlineStyleProperty(CSSPropertyPointerEvents); |
616 } | 611 } |
617 } | 612 } |
618 | 613 |
619 } // namespace WebCore | 614 } // namespace WebCore |
620 | 615 |
621 #endif | 616 #endif |
OLD | NEW |