Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(14)

Side by Side Diff: Source/core/html/forms/BaseMultipleFieldsDateAndTimeInputType.cpp

Issue 128153002: Update of change event for datetime input type (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Moved keyboard event to MultipleFieldDateAndTime Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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();
191 } 190 }
192 input->notifyFormStateChanged(); 191 input->notifyFormStateChanged();
193 input->updateClearButtonVisibility(); 192 input->updateClearButtonVisibility();
194 } 193 }
195 194
196 bool BaseMultipleFieldsDateAndTimeInputType::hasCustomFocusLogic() const 195 bool BaseMultipleFieldsDateAndTimeInputType::hasCustomFocusLogic() const
197 { 196 {
198 return false; 197 return false;
199 } 198 }
200 199
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
252 return; 251 return;
253 } 252 }
254 253
255 DateTimeEditElement* edit = this->dateTimeEditElement(); 254 DateTimeEditElement* edit = this->dateTimeEditElement();
256 if (!edit) 255 if (!edit)
257 return; 256 return;
258 DateComponents date; 257 DateComponents date;
259 unsigned end; 258 unsigned end;
260 if (date.parseDate(value, 0, end) && end == value.length()) 259 if (date.parseDate(value, 0, end) && end == value.length())
261 edit->setOnlyYearMonthDay(date); 260 edit->setOnlyYearMonthDay(date);
261 element().dispatchFormControlChangeEvent();
262 } 262 }
263 263
264 void BaseMultipleFieldsDateAndTimeInputType::pickerIndicatorChooseValue(double v alue) 264 void BaseMultipleFieldsDateAndTimeInputType::pickerIndicatorChooseValue(double v alue)
265 { 265 {
266 ASSERT(std::isfinite(value) || std::isnan(value)); 266 ASSERT(std::isfinite(value) || std::isnan(value));
267 if (std::isnan(value)) 267 if (std::isnan(value))
268 element().setValue(emptyString(), DispatchInputAndChangeEvent); 268 element().setValue(emptyString(), DispatchInputAndChangeEvent);
269 else 269 else
270 element().setValueAsNumber(value, ASSERT_NO_EXCEPTION, DispatchInputAndC hangeEvent); 270 element().setValueAsNumber(value, ASSERT_NO_EXCEPTION, DispatchInputAndC hangeEvent);
271 } 271 }
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
423 void BaseMultipleFieldsDateAndTimeInputType::handleKeydownEvent(KeyboardEvent* e vent) 423 void BaseMultipleFieldsDateAndTimeInputType::handleKeydownEvent(KeyboardEvent* e vent)
424 { 424 {
425 if (m_pickerIndicatorIsVisible 425 if (m_pickerIndicatorIsVisible
426 && ((event->keyIdentifier() == "Down" && event->getModifierState("Alt")) || (RenderTheme::theme().shouldOpenPickerWithF4Key() && event->keyIdentifier() == "F4"))) { 426 && ((event->keyIdentifier() == "Down" && event->getModifierState("Alt")) || (RenderTheme::theme().shouldOpenPickerWithF4Key() && event->keyIdentifier() == "F4"))) {
427 if (PickerIndicatorElement* element = pickerIndicatorElement()) 427 if (PickerIndicatorElement* element = pickerIndicatorElement())
428 element->openPopup(); 428 element->openPopup();
429 event->setDefaultHandled(); 429 event->setDefaultHandled();
430 } else { 430 } else {
431 forwardEvent(event); 431 forwardEvent(event);
432 } 432 }
433 element().dispatchFormControlChangeEvent();
tkent 2014/01/20 02:05:22 We shouldn't put dispatchFormControlChangeEvent he
433 } 434 }
434 435
435 bool BaseMultipleFieldsDateAndTimeInputType::hasBadInput() const 436 bool BaseMultipleFieldsDateAndTimeInputType::hasBadInput() const
436 { 437 {
437 DateTimeEditElement* edit = dateTimeEditElement(); 438 DateTimeEditElement* edit = dateTimeEditElement();
438 return element().value().isEmpty() && edit && edit->anyEditableFieldsHaveVal ues(); 439 return element().value().isEmpty() && edit && edit->anyEditableFieldsHaveVal ues();
439 } 440 }
440 441
441 AtomicString BaseMultipleFieldsDateAndTimeInputType::localeIdentifier() const 442 AtomicString BaseMultipleFieldsDateAndTimeInputType::localeIdentifier() const
442 { 443 {
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
602 clearButton->setInlineStyleProperty(CSSPropertyPointerEvents, CSSValueNo ne); 603 clearButton->setInlineStyleProperty(CSSPropertyPointerEvents, CSSValueNo ne);
603 } else { 604 } else {
604 clearButton->removeInlineStyleProperty(CSSPropertyOpacity); 605 clearButton->removeInlineStyleProperty(CSSPropertyOpacity);
605 clearButton->removeInlineStyleProperty(CSSPropertyPointerEvents); 606 clearButton->removeInlineStyleProperty(CSSPropertyPointerEvents);
606 } 607 }
607 } 608 }
608 609
609 } // namespace WebCore 610 } // namespace WebCore
610 611
611 #endif 612 #endif
OLDNEW
« no previous file with comments | « LayoutTests/fast/forms/week-multiple-fields/week-multiple-fields-spinbutton-change-and-input-events-expected.txt ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698