diff options
Diffstat (limited to 'chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_timeline_element.cc')
-rw-r--r-- | chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_timeline_element.cc | 41 |
1 files changed, 27 insertions, 14 deletions
diff --git a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_timeline_element.cc b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_timeline_element.cc index 456171e86fd..9679e4a3bdc 100644 --- a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_timeline_element.cc +++ b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_timeline_element.cc @@ -34,6 +34,7 @@ namespace { const double kCurrentTimeBufferedDelta = 1.0; +const int kThumbRadius = 6; // Only respond to main button of primary pointer(s). bool IsValidPointerEvent(const blink::Event& event) { @@ -81,13 +82,13 @@ bool MediaControlTimelineElement::WillRespondToMouseClickEvents() { void MediaControlTimelineElement::SetPosition(double current_time) { setValue(String::Number(current_time)); setAttribute( - HTMLNames::aria_valuetextAttr, + html_names::kAriaValuetextAttr, AtomicString(GetMediaControls().CurrentTimeDisplay().textContent(true))); RenderBarSegments(); } void MediaControlTimelineElement::SetDuration(double duration) { - SetFloatingPointAttribute(HTMLNames::maxAttr, + SetFloatingPointAttribute(html_names::kMaxAttr, std::isfinite(duration) ? duration : 0); RenderBarSegments(); } @@ -116,7 +117,7 @@ void MediaControlTimelineElement::DefaultEventHandler(Event& event) { UserMetricsAction("Media.Controls.ScrubbingBegin")); GetMediaControls().BeginScrubbing(MediaControlsImpl::IsTouchEvent(&event)); Element* thumb = UserAgentShadowRoot()->getElementById( - ShadowElementNames::SliderThumb()); + shadow_element_names::SliderThumb()); bool started_from_thumb = thumb && thumb == event.target()->ToNode(); metrics_.StartGesture(started_from_thumb); } else if (EndScrubbingEvent(event)) { @@ -126,10 +127,10 @@ void MediaControlTimelineElement::DefaultEventHandler(Event& event) { metrics_.RecordEndGesture(TrackWidth(), MediaElement().duration()); } - if (event.type() == EventTypeNames::keydown) { + if (event.type() == event_type_names::kKeydown) { metrics_.StartKey(); } - if (event.type() == EventTypeNames::keyup && event.IsKeyboardEvent()) { + if (event.type() == event_type_names::kKeyup && event.IsKeyboardEvent()) { metrics_.RecordEndKey(TrackWidth(), ToKeyboardEvent(event).keyCode()); } @@ -141,7 +142,7 @@ void MediaControlTimelineElement::DefaultEventHandler(Event& event) { } // Update the value based on the touchmove event. - if (is_touching_ && event.type() == EventTypeNames::touchmove) { + if (is_touching_ && event.type() == event_type_names::kTouchmove) { auto& touch_event = ToTouchEvent(event); if (touch_event.touches()->length() != 1) return; @@ -150,7 +151,7 @@ void MediaControlTimelineElement::DefaultEventHandler(Event& event) { double position = max(0.0, fmin(1.0, touch->clientX() / TrackWidth() * ZoomFactor())); SetPosition(position * MediaElement().duration()); - } else if (event.type() != EventTypeNames::input) { + } else if (event.type() != event_type_names::kInput) { return; } @@ -198,6 +199,18 @@ void MediaControlTimelineElement::RenderBarSegments() { } double current_position = current_time / duration; + + // Transform the current_position to always align with the center of thumb + // At time 0, the thumb's center is 6px away from beginning of progress bar + // At the end of video, thumb's center is -6px away from end of progress bar + // Convert 6px into ratio respect to progress bar width since + // current_position is range from 0 to 1 + double width = TrackWidth() / ZoomFactor(); + if (width != 0) { + double offset = kThumbRadius / width; + current_position += offset - 2 * offset * current_position; + } + MediaControlSliderElement::Position before_segment(0, 0); MediaControlSliderElement::Position after_segment(0, 0); @@ -259,11 +272,11 @@ void MediaControlTimelineElement::Trace(blink::Visitor* visitor) { } bool MediaControlTimelineElement::BeginScrubbingEvent(Event& event) { - if (event.type() == EventTypeNames::touchstart) { + if (event.type() == event_type_names::kTouchstart) { is_touching_ = true; return true; } - if (event.type() == EventTypeNames::pointerdown) + if (event.type() == event_type_names::kPointerdown) return IsValidPointerEvent(event); return false; @@ -282,14 +295,14 @@ void MediaControlTimelineElement::OnControlsShown() { bool MediaControlTimelineElement::EndScrubbingEvent(Event& event) { if (is_touching_) { - if (event.type() == EventTypeNames::touchend || - event.type() == EventTypeNames::touchcancel || - event.type() == EventTypeNames::change) { + if (event.type() == event_type_names::kTouchend || + event.type() == event_type_names::kTouchcancel || + event.type() == event_type_names::kChange) { is_touching_ = false; return true; } - } else if (event.type() == EventTypeNames::pointerup || - event.type() == EventTypeNames::pointercancel) { + } else if (event.type() == event_type_names::kPointerup || + event.type() == event_type_names::kPointercancel) { return IsValidPointerEvent(event); } |