void SliderThumbElement::handleTouchEvent(TouchEvent* touchEvent) { HTMLInputElement* input = hostInput(); ASSERT(input); if (input->isReadOnly() || input->isDisabledFormControl()) { clearExclusiveTouchIdentifier(); stopDragging(); touchEvent->setDefaultHandled(); HTMLDivElement::defaultEventHandler(touchEvent); return; } const AtomicString& eventType = touchEvent->type(); if (eventType == eventNames().touchstartEvent) { handleTouchStart(touchEvent); return; } if (eventType == eventNames().touchendEvent || eventType == eventNames().touchcancelEvent) { handleTouchEndAndCancel(touchEvent); return; } if (eventType == eventNames().touchmoveEvent) { handleTouchMove(touchEvent); return; } HTMLDivElement::defaultEventHandler(touchEvent); }
void SliderThumbElement::unregisterForTouchEvents() { if (!m_isRegisteredAsTouchEventListener) return; clearExclusiveTouchIdentifier(); stopDragging(); document().removeTouchEventListener(this); m_isRegisteredAsTouchEventListener = false; }
void SliderThumbElement::handleTouchEndAndCancel(TouchEvent* touchEvent) { unsigned identifier = exclusiveTouchIdentifier(); if (identifier == NoIdentifier) return; // If our exclusive touch still exists, it was not the touch // that ended, so we should not stop dragging. Touch* exclusiveTouch = findTouchWithIdentifier(touchEvent->targetTouches(), identifier); if (exclusiveTouch) return; clearExclusiveTouchIdentifier(); stopDragging(); }