diff options
Diffstat (limited to 'chromium/third_party/blink/renderer/modules/media_controls/touchless/elements')
9 files changed, 77 insertions, 4 deletions
diff --git a/chromium/third_party/blink/renderer/modules/media_controls/touchless/elements/media_controls_touchless_bottom_container_element.cc b/chromium/third_party/blink/renderer/modules/media_controls/touchless/elements/media_controls_touchless_bottom_container_element.cc index 4542382a807..d70899258eb 100644 --- a/chromium/third_party/blink/renderer/modules/media_controls/touchless/elements/media_controls_touchless_bottom_container_element.cc +++ b/chromium/third_party/blink/renderer/modules/media_controls/touchless/elements/media_controls_touchless_bottom_container_element.cc @@ -4,8 +4,10 @@ #include "third_party/blink/renderer/modules/media_controls/touchless/elements/media_controls_touchless_bottom_container_element.h" +#include "third_party/blink/renderer/core/html/media/html_media_element.h" #include "third_party/blink/renderer/modules/media_controls/touchless/elements/media_controls_touchless_time_display_element.h" #include "third_party/blink/renderer/modules/media_controls/touchless/elements/media_controls_touchless_timeline_element.h" +#include "third_party/blink/renderer/platform/wtf/functional.h" namespace blink { @@ -25,6 +27,14 @@ MediaControlsTouchlessBottomContainerElement:: ParserAppendChild(time_display_element_); ParserAppendChild(timeline_element_); + + event_listener_ = + MakeGarbageCollected<MediaControlsSharedHelpers::TransitionEventListener>( + this, + WTF::BindRepeating(&MediaControlsTouchlessBottomContainerElement:: + HandleTransitionEndEvent, + WrapWeakPersistent(this))); + event_listener_->Attach(); } LayoutObject* @@ -37,10 +47,30 @@ MediaControlsTouchlessBottomContainerElement::TimeDisplayLayoutObject() { return time_display_element_->GetLayoutObject(); } +void MediaControlsTouchlessBottomContainerElement::MakeOpaque( + bool should_hide) { + SetDisplayed(true); + MediaElement().MediaControlsDidBecomeVisible(); + MediaControlsTouchlessElement::MakeOpaque(should_hide); +} + +void MediaControlsTouchlessBottomContainerElement::HandleTransitionEndEvent() { + SetDisplayed(false); +} + +void MediaControlsTouchlessBottomContainerElement::SetDisplayed( + bool displayed) { + if (displayed) + RemoveInlineStyleProperty(CSSPropertyID::kDisplay); + else + SetInlineStyleProperty(CSSPropertyID::kDisplay, CSSValueID::kNone); +} + void MediaControlsTouchlessBottomContainerElement::Trace( blink::Visitor* visitor) { visitor->Trace(timeline_element_); visitor->Trace(time_display_element_); + visitor->Trace(event_listener_); MediaControlsTouchlessElement::Trace(visitor); } diff --git a/chromium/third_party/blink/renderer/modules/media_controls/touchless/elements/media_controls_touchless_bottom_container_element.h b/chromium/third_party/blink/renderer/modules/media_controls/touchless/elements/media_controls_touchless_bottom_container_element.h index 34d04de3191..e23acc51a24 100644 --- a/chromium/third_party/blink/renderer/modules/media_controls/touchless/elements/media_controls_touchless_bottom_container_element.h +++ b/chromium/third_party/blink/renderer/modules/media_controls/touchless/elements/media_controls_touchless_bottom_container_element.h @@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_MEDIA_CONTROLS_TOUCHLESS_ELEMENTS_MEDIA_CONTROLS_TOUCHLESS_BOTTOM_CONTAINER_ELEMENT_H_ #define THIRD_PARTY_BLINK_RENDERER_MODULES_MEDIA_CONTROLS_TOUCHLESS_ELEMENTS_MEDIA_CONTROLS_TOUCHLESS_BOTTOM_CONTAINER_ELEMENT_H_ +#include "third_party/blink/renderer/modules/media_controls/media_controls_shared_helper.h" #include "third_party/blink/renderer/modules/media_controls/touchless/elements/media_controls_touchless_element.h" namespace blink { @@ -20,11 +21,17 @@ class MediaControlsTouchlessBottomContainerElement MediaControlsTouchlessBottomContainerElement(MediaControlsTouchlessImpl&); LayoutObject* TimelineLayoutObject(); LayoutObject* TimeDisplayLayoutObject(); + + void MakeOpaque(bool); void Trace(blink::Visitor*) override; private: + void HandleTransitionEndEvent(); + void SetDisplayed(bool); + Member<MediaControlsTouchlessTimelineElement> timeline_element_; Member<MediaControlsTouchlessTimeDisplayElement> time_display_element_; + Member<MediaControlsSharedHelpers::TransitionEventListener> event_listener_; }; } // namespace blink diff --git a/chromium/third_party/blink/renderer/modules/media_controls/touchless/elements/media_controls_touchless_element.cc b/chromium/third_party/blink/renderer/modules/media_controls/touchless/elements/media_controls_touchless_element.cc index cbbac960438..4c2c2137a2d 100644 --- a/chromium/third_party/blink/renderer/modules/media_controls/touchless/elements/media_controls_touchless_element.cc +++ b/chromium/third_party/blink/renderer/modules/media_controls/touchless/elements/media_controls_touchless_element.cc @@ -17,6 +17,7 @@ namespace { constexpr WTF::TimeDelta kTimeToHideControl = TimeDelta::FromMilliseconds(3000); const char kTransparentCSSClass[] = "transparent"; +const char kTransparentImmediateCSSClass[] = "transparent-immediate"; } // namespace @@ -34,7 +35,7 @@ HTMLMediaElement& MediaControlsTouchlessElement::MediaElement() const { void MediaControlsTouchlessElement::MakeOpaque(bool should_hide) { EnsureHideControlTimer(); - classList().Remove(kTransparentCSSClass); + removeAttribute("class"); if (hide_control_timer_->IsActive()) StopHideControlTimer(); @@ -43,8 +44,9 @@ void MediaControlsTouchlessElement::MakeOpaque(bool should_hide) { StartHideControlTimer(); } -void MediaControlsTouchlessElement::MakeTransparent() { - classList().Add(kTransparentCSSClass); +void MediaControlsTouchlessElement::MakeTransparent(bool hide_immediate) { + classList().Add(hide_immediate ? kTransparentImmediateCSSClass + : kTransparentCSSClass); } void MediaControlsTouchlessElement::EnsureHideControlTimer() { diff --git a/chromium/third_party/blink/renderer/modules/media_controls/touchless/elements/media_controls_touchless_element.h b/chromium/third_party/blink/renderer/modules/media_controls/touchless/elements/media_controls_touchless_element.h index b43c44d21db..f5463bbf466 100644 --- a/chromium/third_party/blink/renderer/modules/media_controls/touchless/elements/media_controls_touchless_element.h +++ b/chromium/third_party/blink/renderer/modules/media_controls/touchless/elements/media_controls_touchless_element.h @@ -27,12 +27,13 @@ class MediaControlsTouchlessElement void Trace(blink::Visitor* visitor) override; void MakeOpaque(bool /** True if control should hide after timer fired */); - void MakeTransparent(); + void MakeTransparent(bool = false /** True if hide immediately */); // Non-touch media event listener observer implementation. void OnFocusIn() override {} void OnTimeUpdate() override {} void OnDurationChange() override {} + void OnSeeking() override {} void OnLoadingProgress() override {} void OnPlay() override {} void OnPause() override {} diff --git a/chromium/third_party/blink/renderer/modules/media_controls/touchless/elements/media_controls_touchless_overlay_element.cc b/chromium/third_party/blink/renderer/modules/media_controls/touchless/elements/media_controls_touchless_overlay_element.cc index 5e008b0b004..7ac1f447124 100644 --- a/chromium/third_party/blink/renderer/modules/media_controls/touchless/elements/media_controls_touchless_overlay_element.cc +++ b/chromium/third_party/blink/renderer/modules/media_controls/touchless/elements/media_controls_touchless_overlay_element.cc @@ -8,6 +8,8 @@ #include "third_party/blink/renderer/modules/media_controls/touchless/elements/media_controls_touchless_seek_button_element.h" #include "third_party/blink/renderer/modules/media_controls/touchless/elements/media_controls_touchless_volume_button_element.h" #include "third_party/blink/renderer/modules/media_controls/touchless/media_controls_touchless_impl.h" +#include "third_party/blink/renderer/platform/text/platform_locale.h" +#include "third_party/blink/renderer/platform/wtf/text/string_builder.h" namespace blink { @@ -39,6 +41,14 @@ MediaControlsTouchlessOverlayElement::MediaControlsTouchlessOverlayElement( ParserAppendChild(play_button); ParserAppendChild(seek_forward_button); ParserAppendChild(volume_down_button); + + StringBuilder aria_label; + aria_label.Append( + GetLocale().QueryString(WebLocalizedString::kAXMediaTouchLessSeekAction)); + aria_label.Append(" "); + aria_label.Append(GetLocale().QueryString( + WebLocalizedString::kAXMediaTouchLessVolumeAction)); + setAttribute(html_names::kAriaLabelAttr, aria_label.ToAtomicString()); } void MediaControlsTouchlessOverlayElement::Trace(blink::Visitor* visitor) { diff --git a/chromium/third_party/blink/renderer/modules/media_controls/touchless/elements/media_controls_touchless_time_display_element.cc b/chromium/third_party/blink/renderer/modules/media_controls/touchless/elements/media_controls_touchless_time_display_element.cc index 261f52bb2d8..5c6db6bfa01 100644 --- a/chromium/third_party/blink/renderer/modules/media_controls/touchless/elements/media_controls_touchless_time_display_element.cc +++ b/chromium/third_party/blink/renderer/modules/media_controls/touchless/elements/media_controls_touchless_time_display_element.cc @@ -7,6 +7,7 @@ #include "third_party/blink/renderer/core/html/media/html_media_element.h" #include "third_party/blink/renderer/modules/media_controls/media_controls_shared_helper.h" #include "third_party/blink/renderer/modules/media_controls/touchless/media_controls_touchless_impl.h" +#include "third_party/blink/renderer/platform/text/platform_locale.h" #include "third_party/blink/renderer/platform/wtf/text/string_builder.h" namespace blink { @@ -27,6 +28,11 @@ void MediaControlsTouchlessTimeDisplayElement::OnTimeUpdate() { UpdateTimeDisplay(); } +void MediaControlsTouchlessTimeDisplayElement::OnSeeking() { + current_time_ = MediaElement().currentTime(); + UpdateTimeDisplay(); +} + void MediaControlsTouchlessTimeDisplayElement::OnDurationChange() { duration_ = MediaElement().duration(); UpdateTimeDisplay(); @@ -42,6 +48,16 @@ void MediaControlsTouchlessTimeDisplayElement::UpdateTimeDisplay() { builder.Append(" / "); builder.Append(MediaControlsSharedHelpers::FormatTime(duration_)); setInnerText(builder.ToAtomicString(), ASSERT_NO_EXCEPTION); + + StringBuilder aria_label; + aria_label.Append(GetLocale().QueryString( + WebLocalizedString::kAXMediaCurrentTimeDisplay, + MediaControlsSharedHelpers::FormatTime(current_time_))); + aria_label.Append(" "); + aria_label.Append(GetLocale().QueryString( + WebLocalizedString::kAXMediaTimeRemainingDisplay, + MediaControlsSharedHelpers::FormatTime(duration_))); + setAttribute(html_names::kAriaLabelAttr, aria_label.ToAtomicString()); } } // namespace blink diff --git a/chromium/third_party/blink/renderer/modules/media_controls/touchless/elements/media_controls_touchless_time_display_element.h b/chromium/third_party/blink/renderer/modules/media_controls/touchless/elements/media_controls_touchless_time_display_element.h index 6a8455a559e..0134b091c4c 100644 --- a/chromium/third_party/blink/renderer/modules/media_controls/touchless/elements/media_controls_touchless_time_display_element.h +++ b/chromium/third_party/blink/renderer/modules/media_controls/touchless/elements/media_controls_touchless_time_display_element.h @@ -18,6 +18,7 @@ class MediaControlsTouchlessTimeDisplayElement // MediaControlsTouchlessMediaEventListenerObserver overrides void OnTimeUpdate() override; + void OnSeeking() override; void OnDurationChange() override; void Trace(blink::Visitor* visitor) override; diff --git a/chromium/third_party/blink/renderer/modules/media_controls/touchless/elements/media_controls_touchless_timeline_element.cc b/chromium/third_party/blink/renderer/modules/media_controls/touchless/elements/media_controls_touchless_timeline_element.cc index 57bd4a639c8..413ae227057 100644 --- a/chromium/third_party/blink/renderer/modules/media_controls/touchless/elements/media_controls_touchless_timeline_element.cc +++ b/chromium/third_party/blink/renderer/modules/media_controls/touchless/elements/media_controls_touchless_timeline_element.cc @@ -34,6 +34,11 @@ void MediaControlsTouchlessTimelineElement::OnTimeUpdate() { UpdateBars(); } +void MediaControlsTouchlessTimelineElement::OnSeeking() { + current_time_ = MediaElement().currentTime(); + UpdateBars(); +} + void MediaControlsTouchlessTimelineElement::OnDurationChange() { duration_ = MediaElement().duration(); UpdateBars(); diff --git a/chromium/third_party/blink/renderer/modules/media_controls/touchless/elements/media_controls_touchless_timeline_element.h b/chromium/third_party/blink/renderer/modules/media_controls/touchless/elements/media_controls_touchless_timeline_element.h index b1416ce9ae2..c8a17e7ac55 100644 --- a/chromium/third_party/blink/renderer/modules/media_controls/touchless/elements/media_controls_touchless_timeline_element.h +++ b/chromium/third_party/blink/renderer/modules/media_controls/touchless/elements/media_controls_touchless_timeline_element.h @@ -17,6 +17,7 @@ class MediaControlsTouchlessTimelineElement // MediaControlsTouchlessMediaEventListenerObserver overrides void OnTimeUpdate() override; + void OnSeeking() override; void OnDurationChange() override; void OnLoadingProgress() override; |