void BaseMultipleFieldsDateAndTimeInputType::createShadowSubtree() { ASSERT(element()->shadow()); Document* document = element()->document(); ContainerNode* container = element()->userAgentShadowRoot(); RefPtr<DateTimeEditElement> dateTimeEditElement(DateTimeEditElement::create(document, *this)); m_dateTimeEditElement = dateTimeEditElement.get(); container->appendChild(m_dateTimeEditElement); updateInnerTextValue(); RefPtr<SpinButtonElement> spinButton = SpinButtonElement::create(document, *this); m_spinButtonElement = spinButton.get(); container->appendChild(spinButton); bool shouldAddPickerIndicator = false; #if ENABLE(DATALIST_ELEMENT) if (InputType::themeSupportsDataListUI(this)) shouldAddPickerIndicator = true; #endif RefPtr<RenderTheme> theme = document->page() ? document->page()->theme() : RenderTheme::defaultTheme(); if (theme->supportsCalendarPicker(formControlType())) { shouldAddPickerIndicator = true; m_pickerIndicatorIsAlwaysVisible = true; } if (shouldAddPickerIndicator) { RefPtr<PickerIndicatorElement> pickerElement = PickerIndicatorElement::create(document, *this); m_pickerIndicatorElement = pickerElement.get(); container->appendChild(m_pickerIndicatorElement); m_pickerIndicatorIsVisible = true; updatePickerIndicatorVisibility(); } }
void BaseMultipleFieldsDateAndTimeInputType::setValue(const String& sanitizedValue, bool valueChanged, TextFieldEventBehavior eventBehavior) { InputType::setValue(sanitizedValue, valueChanged, eventBehavior); if (valueChanged || (sanitizedValue.isEmpty() && m_dateTimeEditElement && m_dateTimeEditElement->anyEditableFieldsHaveValues())) { updateInnerTextValue(); element()->setNeedsValidityCheck(); } }
void NumberInputType::handleBlurEvent() { // Reset the renderer value, which might be unmatched with the element value. element()->setFormControlValueMatchesRenderer(false); // We need to reset the renderer value explicitly because an unacceptable // renderer value should be purged before style calculation. updateInnerTextValue(); }
void BaseMultipleFieldsDateAndTimeInputType::createShadowSubtree() { DEFINE_STATIC_LOCAL(AtomicString, dateAndTimeInputContainerPseudoId, ("-webkit-date-and-time-container", AtomicString::ConstructFromLiteral)); ASSERT(element()->shadow()); Document* document = element()->document(); RefPtr<HTMLDivElement> container = HTMLDivElement::create(document); element()->userAgentShadowRoot()->appendChild(container); container->setShadowPseudoId(dateAndTimeInputContainerPseudoId); RefPtr<DateTimeEditElement> dateTimeEditElement(DateTimeEditElement::create(document, *this)); m_dateTimeEditElement = dateTimeEditElement.get(); container->appendChild(m_dateTimeEditElement); updateInnerTextValue(); RefPtr<SpinButtonElement> spinButton = SpinButtonElement::create(document, *this); m_spinButtonElement = spinButton.get(); container->appendChild(spinButton); #if ENABLE(DATALIST_ELEMENT) || ENABLE(CALENDAR_PICKER) bool shouldAddPickerIndicator = false; #if ENABLE(DATALIST_ELEMENT) if (InputType::themeSupportsDataListUI(this)) shouldAddPickerIndicator = true; #endif #if ENABLE(CALENDAR_PICKER) RefPtr<RenderTheme> theme = document->page() ? document->page()->theme() : RenderTheme::defaultTheme(); if (theme->supportsCalendarPicker(formControlType())) { shouldAddPickerIndicator = true; m_pickerIndicatorIsAlwaysVisible = true; } #endif if (shouldAddPickerIndicator) { RefPtr<PickerIndicatorElement> pickerElement = PickerIndicatorElement::create(document); m_pickerIndicatorElement = pickerElement.get(); container->appendChild(m_pickerIndicatorElement); m_pickerIndicatorIsVisible = true; updatePickerIndicatorVisibility(); } #endif // ENABLE(DATALIST_ELEMENT) || ENABLE(CALENDAR_PICKER) }
void NumberInputType::setValue(const String& sanitizedValue, bool valueChanged, TextFieldEventBehavior eventBehavior) { if (!valueChanged && sanitizedValue.isEmpty() && !element()->innerTextValue().isEmpty()) updateInnerTextValue(); TextFieldInputType::setValue(sanitizedValue, valueChanged, eventBehavior); }
void BaseMultipleFieldsDateAndTimeInputType::stepAttributeChanged() { updateInnerTextValue(); }
void BaseMultipleFieldsDateAndTimeInputType::setValue(const String& sanitizedValue, bool valueChanged, TextFieldEventBehavior eventBehavior) { InputType::setValue(sanitizedValue, valueChanged, eventBehavior); if (valueChanged) updateInnerTextValue(); }