void MultipleFieldsTemporalInputTypeView::didFocusOnControl() {
  // We don't need to call focus(). This function is called when control
  // got focus.

  if (!containsFocusedShadowElement())
    return;
  // Add focus ring by CSS "focus" pseudo class.
  // FIXME: Setting the focus flag to non-focused element is too tricky.
  element().setFocused(true);
}
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();
}
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;
}