void BaseMultipleFieldsDateAndTimeInputType::readonlyAttributeChanged()
{
    EventQueueScope scope;
    spinButtonElement()->releaseCapture();
    if (DateTimeEditElement* edit = dateTimeEditElement())
        edit->readOnlyStateChanged();
}
void MultipleFieldsTemporalInputTypeView::forwardEvent(Event* event) {
  if (SpinButtonElement* element = spinButtonElement()) {
    element->forwardEvent(event);
    if (event->defaultHandled())
      return;
  }

  if (DateTimeEditElement* edit = dateTimeEditElement())
    edit->defaultEventHandler(event);
}
void BaseMultipleFieldsDateAndTimeInputType::forwardEvent(Event* event)
{
    if (SpinButtonElement* element = spinButtonElement()) {
        element->forwardEvent(event);
        if (event->defaultHandled())
            return;
    }

    if (DateTimeEditElement* edit = dateTimeEditElement())
        edit->defaultEventHandler(event);
}
void MultipleFieldsTemporalInputTypeView::didBlurFromControl() {
  // We don't need to call blur(). This function is called when control
  // lost focus.

  if (containsFocusedShadowElement())
    return;
  EventQueueScope scope;
  // Remove focus ring by CSS "focus" pseudo class.
  element().setFocused(false);
  if (SpinButtonElement* spinButton = spinButtonElement())
    spinButton->releaseCapture();
}
BaseMultipleFieldsDateAndTimeInputType::~BaseMultipleFieldsDateAndTimeInputType()
{
#if !ENABLE(OILPAN)
    if (SpinButtonElement* element = spinButtonElement())
        element->removeSpinButtonOwner();
    if (ClearButtonElement* element = clearButtonElement())
        element->removeClearButtonOwner();
    if (DateTimeEditElement* element = dateTimeEditElement())
        element->removeEditControlOwner();
    if (PickerIndicatorElement* element = pickerIndicatorElement())
        element->removePickerIndicatorOwner();
#endif
}
void BaseMultipleFieldsDateAndTimeInputType::didBlurFromControl()
{
    // We don't need to call blur(). This function is called when control
    // lost focus.

    if (containsFocusedShadowElement())
        return;
    EventQueueScope scope;
    RefPtrWillBeRawPtr<HTMLInputElement> protector(element());
    // Remove focus ring by CSS "focus" pseudo class.
    element().setFocus(false);
    if (SpinButtonElement *spinButton = spinButtonElement())
        spinButton->releaseCapture();
}
void MultipleFieldsTemporalInputTypeView::destroyShadowSubtree() {
  DCHECK(!m_isDestroyingShadowSubtree);
  m_isDestroyingShadowSubtree = true;
  if (SpinButtonElement* element = spinButtonElement())
    element->removeSpinButtonOwner();
  if (ClearButtonElement* element = clearButtonElement())
    element->removeClearButtonOwner();
  if (DateTimeEditElement* element = dateTimeEditElement())
    element->removeEditControlOwner();
  if (PickerIndicatorElement* element = pickerIndicatorElement())
    element->removePickerIndicatorOwner();

  // If a field element has focus, set focus back to the <input> itself before
  // deleting the field. This prevents unnecessary focusout/blur events.
  if (containsFocusedShadowElement())
    element().focus();

  InputTypeView::destroyShadowSubtree();
  m_isDestroyingShadowSubtree = false;
}
void MultipleFieldsTemporalInputTypeView::disabledAttributeChanged() {
  EventQueueScope scope;
  spinButtonElement()->releaseCapture();
  if (DateTimeEditElement* edit = dateTimeEditElement())
    edit->disabledStateChanged();
}
void BaseMultipleFieldsDateAndTimeInputType::disabledAttributeChanged()
{
    spinButtonElement()->releaseCapture();
    if (DateTimeEditElement* edit = dateTimeEditElement())
        edit->disabledStateChanged();
}