diff options
Diffstat (limited to 'chromium/third_party/blink/renderer/modules/media_controls/elements')
35 files changed, 250 insertions, 161 deletions
diff --git a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_animated_arrow_container_element.cc b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_animated_arrow_container_element.cc index 0848f2d8cce..da595e2a5e3 100644 --- a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_animated_arrow_container_element.cc +++ b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_animated_arrow_container_element.cc @@ -37,7 +37,8 @@ void MediaControlAnimatedArrowContainerElement::AnimatedArrow::ShowInternal() { last_arrow_ = getElementById("arrow-3"); svg_container_ = getElementById("jump"); - event_listener_ = new MediaControlAnimationEventListener(this); + event_listener_ = + MakeGarbageCollected<MediaControlAnimationEventListener>(this); } void MediaControlAnimatedArrowContainerElement::AnimatedArrow:: diff --git a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_animated_arrow_container_element_test.cc b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_animated_arrow_container_element_test.cc index 584e6c168f4..a1d213ab619 100644 --- a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_animated_arrow_container_element_test.cc +++ b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_animated_arrow_container_element_test.cc @@ -39,7 +39,7 @@ class MediaControlAnimatedArrowContainerElementTest : public PageTestBase { void SimulateShow() { arrow_element_->Show(); } void SimulateAnimationIteration() { - Event* event = Event::Create(EventTypeNames::animationiteration); + Event* event = Event::Create(event_type_names::kAnimationiteration); GetElementById("arrow-3")->DispatchEvent(*event); } diff --git a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_animation_event_listener.cc b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_animation_event_listener.cc index f7443373dc1..f31e1b45fe6 100644 --- a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_animation_event_listener.cc +++ b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_animation_event_listener.cc @@ -13,16 +13,16 @@ MediaControlAnimationEventListener::MediaControlAnimationEventListener( Observer* observer) : EventListener(EventListener::kCPPEventListenerType), observer_(observer) { observer_->WatchedAnimationElement().addEventListener( - EventTypeNames::animationend, this, false); + event_type_names::kAnimationend, this, false); observer_->WatchedAnimationElement().addEventListener( - EventTypeNames::animationiteration, this, false); + event_type_names::kAnimationiteration, this, false); } void MediaControlAnimationEventListener::Detach() { observer_->WatchedAnimationElement().removeEventListener( - EventTypeNames::animationend, this, false); + event_type_names::kAnimationend, this, false); observer_->WatchedAnimationElement().removeEventListener( - EventTypeNames::animationiteration, this, false); + event_type_names::kAnimationiteration, this, false); } bool MediaControlAnimationEventListener::operator==( @@ -35,13 +35,13 @@ void MediaControlAnimationEventListener::Trace(Visitor* visitor) { EventListener::Trace(visitor); } -void MediaControlAnimationEventListener::handleEvent(ExecutionContext* context, - Event* event) { - if (event->type() == EventTypeNames::animationend) { +void MediaControlAnimationEventListener::Invoke(ExecutionContext* context, + Event* event) { + if (event->type() == event_type_names::kAnimationend) { observer_->OnAnimationEnd(); return; } - if (event->type() == EventTypeNames::animationiteration) { + if (event->type() == event_type_names::kAnimationiteration) { observer_->OnAnimationIteration(); return; } diff --git a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_animation_event_listener.h b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_animation_event_listener.h index 0546d8afc42..987e3ea6ea5 100644 --- a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_animation_event_listener.h +++ b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_animation_event_listener.h @@ -52,7 +52,7 @@ class MODULES_EXPORT MediaControlAnimationEventListener final void Trace(Visitor*) override; private: - void handleEvent(ExecutionContext*, Event*) override; + void Invoke(ExecutionContext*, Event*) override; Member<Observer> observer_; }; diff --git a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_cast_button_element.cc b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_cast_button_element.cc index ea489594c5b..40f5426e955 100644 --- a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_cast_button_element.cc +++ b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_cast_button_element.cc @@ -39,7 +39,7 @@ MediaControlCastButtonElement::MediaControlCastButtonElement( SetShadowPseudoId(is_overlay_button ? "-internal-media-controls-overlay-cast-button" : "-internal-media-controls-cast-button"); - setType(InputTypeNames::button); + setType(input_type_names::kButton); UpdateDisplayType(); } @@ -93,7 +93,7 @@ const char* MediaControlCastButtonElement::GetNameForHistograms() const { } void MediaControlCastButtonElement::DefaultEventHandler(Event& event) { - if (event.type() == EventTypeNames::click) { + if (event.type() == event_type_names::kClick) { if (is_overlay_button_) { Platform::Current()->RecordAction( UserMetricsAction("Media.Controls.CastOverlay")); diff --git a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_consts.cc b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_consts.cc new file mode 100644 index 00000000000..4941a77f7cf --- /dev/null +++ b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_consts.cc @@ -0,0 +1,11 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "third_party/blink/renderer/modules/media_controls/elements/media_control_consts.h" + +namespace blink { + +const char kClosedCSSClass[] = "closed"; + +} // namespace blink diff --git a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_consts.h b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_consts.h new file mode 100644 index 00000000000..d1a85779e74 --- /dev/null +++ b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_consts.h @@ -0,0 +1,14 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_MEDIA_CONTROLS_ELEMENTS_MEDIA_CONTROL_CONSTS_H_ +#define THIRD_PARTY_BLINK_RENDERER_MODULES_MEDIA_CONTROLS_ELEMENTS_MEDIA_CONTROL_CONSTS_H_ + +namespace blink { + +extern const char kClosedCSSClass[]; + +} // namespace blink + +#endif // THIRD_PARTY_BLINK_RENDERER_MODULES_MEDIA_CONTROLS_ELEMENTS_MEDIA_CONTROL_CONSTS_H_ diff --git a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_display_cutout_fullscreen_button_element.cc b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_display_cutout_fullscreen_button_element.cc index f284d1737c0..e6646c3e770 100644 --- a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_display_cutout_fullscreen_button_element.cc +++ b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_display_cutout_fullscreen_button_element.cc @@ -18,7 +18,7 @@ MediaControlDisplayCutoutFullscreenButtonElement:: MediaControlsImpl& media_controls) : MediaControlInputElement(media_controls, kMediaDisplayCutoutFullscreenButton) { - setType(InputTypeNames::button); + setType(input_type_names::kButton); SetShadowPseudoId(AtomicString( "-internal-media-controls-display-cutout-fullscreen-button")); SetIsWanted(false); @@ -31,7 +31,7 @@ bool MediaControlDisplayCutoutFullscreenButtonElement:: void MediaControlDisplayCutoutFullscreenButtonElement::DefaultEventHandler( Event& event) { - if (event.type() == EventTypeNames::click) { + if (event.type() == event_type_names::kClick) { // The button shouldn't be visible if not in fullscreen. DCHECK(MediaElement().IsFullscreen()); diff --git a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_display_cutout_fullscreen_button_element_test.cc b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_display_cutout_fullscreen_button_element_test.cc index 6f9fd45dd93..455234995f4 100644 --- a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_display_cutout_fullscreen_button_element_test.cc +++ b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_display_cutout_fullscreen_button_element_test.cc @@ -23,7 +23,7 @@ namespace { class MockDisplayCutoutChromeClient : public EmptyChromeClient { public: // ChromeClient overrides: - void EnterFullscreen(LocalFrame& frame, const FullscreenOptions&) override { + void EnterFullscreen(LocalFrame& frame, const FullscreenOptions*) override { Fullscreen::DidEnterFullscreen(*frame.GetDocument()); } void ExitFullscreen(LocalFrame& frame) override { @@ -36,7 +36,9 @@ class MockDisplayCutoutChromeClient : public EmptyChromeClient { class MediaControlDisplayCutoutFullscreenButtonElementTest : public PageTestBase { public: - static TouchEventInit GetValidTouchEventInit() { return TouchEventInit(); } + static TouchEventInit* GetValidTouchEventInit() { + return TouchEventInit::Create(); + } void SetUp() override { chrome_client_ = new MockDisplayCutoutChromeClient(); @@ -50,7 +52,7 @@ class MediaControlDisplayCutoutFullscreenButtonElementTest video_ = HTMLVideoElement::Create(GetDocument()); GetDocument().body()->AppendChild(video_); - controls_ = new MediaControlsImpl(*video_); + controls_ = MakeGarbageCollected<MediaControlsImpl>(*video_); controls_->InitializeControls(); display_cutout_fullscreen_button_ = controls_->display_cutout_fullscreen_button_; diff --git a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_download_button_element.cc b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_download_button_element.cc index a240eac3b84..af3d60a8d98 100644 --- a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_download_button_element.cc +++ b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_download_button_element.cc @@ -21,7 +21,7 @@ namespace blink { MediaControlDownloadButtonElement::MediaControlDownloadButtonElement( MediaControlsImpl& media_controls) : MediaControlInputElement(media_controls, kMediaDownloadButton) { - setType(InputTypeNames::button); + setType(input_type_names::kButton); SetShadowPseudoId(AtomicString("-internal-media-controls-download-button")); SetIsWanted(false); } @@ -71,7 +71,7 @@ void MediaControlDownloadButtonElement::UpdateShownState() { void MediaControlDownloadButtonElement::DefaultEventHandler(Event& event) { const KURL& url = MediaElement().currentSrc(); - if (event.type() == EventTypeNames::click && + if (event.type() == event_type_names::kClick && !(url.IsNull() || url.IsEmpty())) { Platform::Current()->RecordAction( UserMetricsAction("Media.Controls.Download")); diff --git a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_elements_helper.cc b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_elements_helper.cc index 7a6b6ac02f8..93483865e9f 100644 --- a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_elements_helper.cc +++ b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_elements_helper.cc @@ -19,11 +19,13 @@ namespace blink { // static bool MediaControlElementsHelper::IsUserInteractionEvent(const Event& event) { const AtomicString& type = event.type(); - return type == EventTypeNames::pointerdown || - type == EventTypeNames::pointerup || - type == EventTypeNames::mousedown || type == EventTypeNames::mouseup || - type == EventTypeNames::click || type == EventTypeNames::dblclick || - event.IsKeyboardEvent() || event.IsTouchEvent(); + return type == event_type_names::kPointerdown || + type == event_type_names::kPointerup || + type == event_type_names::kMousedown || + type == event_type_names::kMouseup || + type == event_type_names::kClick || + type == event_type_names::kDblclick || event.IsKeyboardEvent() || + event.IsTouchEvent(); } // static @@ -46,12 +48,12 @@ bool MediaControlElementsHelper::IsUserInteractionEventForSlider( return false; const AtomicString& type = event.type(); - return type == EventTypeNames::mouseover || - type == EventTypeNames::mouseout || - type == EventTypeNames::mousemove || - type == EventTypeNames::pointerover || - type == EventTypeNames::pointerout || - type == EventTypeNames::pointermove; + return type == event_type_names::kMouseover || + type == event_type_names::kMouseout || + type == event_type_names::kMousemove || + type == event_type_names::kPointerover || + type == event_type_names::kPointerout || + type == event_type_names::kPointermove; } // static diff --git a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_fullscreen_button_element.cc b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_fullscreen_button_element.cc index b3ae69b8ecd..b8368826c34 100644 --- a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_fullscreen_button_element.cc +++ b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_fullscreen_button_element.cc @@ -17,7 +17,7 @@ namespace blink { MediaControlFullscreenButtonElement::MediaControlFullscreenButtonElement( MediaControlsImpl& media_controls) : MediaControlInputElement(media_controls, kMediaEnterFullscreenButton) { - setType(InputTypeNames::button); + setType(input_type_names::kButton); SetShadowPseudoId(AtomicString("-webkit-media-controls-fullscreen-button")); SetIsFullscreen(MediaElement().IsFullscreen()); SetIsWanted(false); @@ -49,7 +49,7 @@ const char* MediaControlFullscreenButtonElement::GetNameForHistograms() const { } void MediaControlFullscreenButtonElement::DefaultEventHandler(Event& event) { - if (event.type() == EventTypeNames::click) { + if (event.type() == event_type_names::kClick) { RecordClickMetrics(); if (MediaElement().IsFullscreen()) GetMediaControls().ExitFullscreen(); diff --git a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_input_element.cc b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_input_element.cc index 806b4ea1fe2..db9cb7d426c 100644 --- a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_input_element.cc +++ b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_input_element.cc @@ -199,7 +199,7 @@ void MediaControlInputElement::UpdateShownState() { } void MediaControlInputElement::DefaultEventHandler(Event& event) { - if (event.type() == EventTypeNames::click) + if (event.type() == event_type_names::kClick) MaybeRecordInteracted(); HTMLInputElement::DefaultEventHandler(event); @@ -272,7 +272,7 @@ WebSize MediaControlInputElement::GetSizeOrDefault() const { } bool MediaControlInputElement::IsDisabled() const { - return hasAttribute(HTMLNames::disabledAttr); + return hasAttribute(html_names::kDisabledAttr); } void MediaControlInputElement::Trace(blink::Visitor* visitor) { diff --git a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_input_element_test.cc b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_input_element_test.cc index 17a12b2350d..e948fe7222e 100644 --- a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_input_element_test.cc +++ b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_input_element_test.cc @@ -30,7 +30,7 @@ class MediaControlInputElementImpl final : public MediaControlInputElement { MediaControlInputElementImpl(MediaControlsImpl& media_controls) // Using arbitrary MediaControlElementType. It should have no impact. : MediaControlInputElement(media_controls, kMediaDownloadButton) { - setType(InputTypeNames::button); + setType(input_type_names::kButton); SetIsWanted(false); } @@ -57,7 +57,7 @@ class MediaControlInputElementTest : public PageTestBase { // Create page and add a video element with controls. PageTestBase::SetUp(); media_element_ = HTMLVideoElement::Create(GetDocument()); - media_element_->SetBooleanAttribute(HTMLNames::controlsAttr, true); + media_element_->SetBooleanAttribute(html_names::kControlsAttr, true); GetDocument().body()->AppendChild(media_element_); // Create instance of MediaControlInputElement to run tests on. @@ -169,7 +169,7 @@ TEST_F(MediaControlInputElementTest, ClickRecordsInteraction) { ControlInputElement().MaybeRecordDisplayed(); ControlInputElement().DispatchSimulatedClick( - Event::CreateBubble(EventTypeNames::click), kSendNoEvents); + Event::CreateBubble(event_type_names::kClick), kSendNoEvents); histogram_tester_.ExpectTotalCount(kControlInputElementHistogramName, 2); histogram_tester_.ExpectBucketCount(kControlInputElementHistogramName, 0, 1); @@ -236,7 +236,7 @@ TEST_F(MediaControlInputElementTest, OverflowElement_DisplayAfterInline) { } TEST_F(MediaControlInputElementTest, ShouldRecordDisplayStates_ReadyState) { - MediaElement().setAttribute(HTMLNames::preloadAttr, "auto"); + MediaElement().setAttribute(html_names::kPreloadAttr, "auto"); SetReadyState(HTMLMediaElement::kHaveNothing); EXPECT_FALSE( @@ -264,15 +264,15 @@ TEST_F(MediaControlInputElementTest, ShouldRecordDisplayStates_Preload) { // the result. SetReadyState(HTMLMediaElement::kHaveNothing); - MediaElement().setAttribute(HTMLNames::preloadAttr, "none"); + MediaElement().setAttribute(html_names::kPreloadAttr, "none"); EXPECT_TRUE( MediaControlInputElement::ShouldRecordDisplayStates(MediaElement())); - MediaElement().setAttribute(HTMLNames::preloadAttr, "preload"); + MediaElement().setAttribute(html_names::kPreloadAttr, "preload"); EXPECT_FALSE( MediaControlInputElement::ShouldRecordDisplayStates(MediaElement())); - MediaElement().setAttribute(HTMLNames::preloadAttr, "auto"); + MediaElement().setAttribute(html_names::kPreloadAttr, "auto"); EXPECT_FALSE( MediaControlInputElement::ShouldRecordDisplayStates(MediaElement())); } diff --git a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_loading_panel_element.cc b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_loading_panel_element.cc index dfb4d440740..c8aa69e60b1 100644 --- a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_loading_panel_element.cc +++ b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_loading_panel_element.cc @@ -98,7 +98,8 @@ void MediaControlLoadingPanelElement::PopulateShadowDOM() { "-internal-media-controls-loading-panel-spinner-mask-2-background", mask2); - event_listener_ = new MediaControlAnimationEventListener(this); + event_listener_ = + MakeGarbageCollected<MediaControlAnimationEventListener>(this); } void MediaControlLoadingPanelElement::RemovedFrom( diff --git a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_loading_panel_element_test.cc b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_loading_panel_element_test.cc index 813235783e9..36dc379eff4 100644 --- a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_loading_panel_element_test.cc +++ b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_loading_panel_element_test.cc @@ -24,14 +24,15 @@ class MediaControlLoadingPanelElementTest : public PageTestBase { // Create page and add a video element with controls. PageTestBase::SetUp(); media_element_ = HTMLVideoElement::Create(GetDocument()); - media_element_->SetBooleanAttribute(HTMLNames::controlsAttr, true); + media_element_->SetBooleanAttribute(html_names::kControlsAttr, true); GetDocument().body()->AppendChild(media_element_); // Create instance of MediaControlInputElement to run tests on. media_controls_ = static_cast<MediaControlsImpl*>(media_element_->GetMediaControls()); ASSERT_NE(media_controls_, nullptr); - loading_element_ = new MediaControlLoadingPanelElement(*media_controls_); + loading_element_ = + MakeGarbageCollected<MediaControlLoadingPanelElement>(*media_controls_); } protected: @@ -90,7 +91,7 @@ class MediaControlLoadingPanelElementTest : public PageTestBase { void SimulateAnimationIterations(int count) { for (int i = 0; i < count; i++) { - TriggerEvent(EventTypeNames::animationiteration); + TriggerEvent(event_type_names::kAnimationiteration); } } @@ -103,7 +104,7 @@ class MediaControlLoadingPanelElementTest : public PageTestBase { ExpectAnimationIterationCount("infinite"); } - void SimulateAnimationEnd() { TriggerEvent(EventTypeNames::animationend); } + void SimulateAnimationEnd() { TriggerEvent(event_type_names::kAnimationend); } void SimulateControlsHidden() { loading_element_->OnControlsHidden(); } diff --git a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_mute_button_element.cc b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_mute_button_element.cc index da173711dda..f1c96f981ec 100644 --- a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_mute_button_element.cc +++ b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_mute_button_element.cc @@ -15,7 +15,7 @@ namespace blink { MediaControlMuteButtonElement::MediaControlMuteButtonElement( MediaControlsImpl& media_controls) : MediaControlInputElement(media_controls, kMediaMuteButton) { - setType(InputTypeNames::button); + setType(input_type_names::kButton); SetShadowPseudoId(AtomicString("-webkit-media-controls-mute-button")); } @@ -51,7 +51,7 @@ const char* MediaControlMuteButtonElement::GetNameForHistograms() const { } void MediaControlMuteButtonElement::DefaultEventHandler(Event& event) { - if (event.type() == EventTypeNames::click) { + if (event.type() == event_type_names::kClick) { if (MediaElement().muted()) { Platform::Current()->RecordAction( UserMetricsAction("Media.Controls.Unmute")); @@ -65,13 +65,13 @@ void MediaControlMuteButtonElement::DefaultEventHandler(Event& event) { } if (!IsOverflowElement()) { - if (event.type() == EventTypeNames::mouseover || - event.type() == EventTypeNames::focus) { + if (event.type() == event_type_names::kMouseover || + event.type() == event_type_names::kFocus) { GetMediaControls().OpenVolumeSliderIfNecessary(); } - if (event.type() == EventTypeNames::mouseout || - event.type() == EventTypeNames::blur) { + if (event.type() == event_type_names::kMouseout || + event.type() == event_type_names::kBlur) { GetMediaControls().CloseVolumeSliderIfNecessary(); } } diff --git a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_overflow_menu_button_element.cc b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_overflow_menu_button_element.cc index cb2ffa7acc1..a33e4b429cc 100644 --- a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_overflow_menu_button_element.cc +++ b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_overflow_menu_button_element.cc @@ -16,7 +16,7 @@ namespace blink { MediaControlOverflowMenuButtonElement::MediaControlOverflowMenuButtonElement( MediaControlsImpl& media_controls) : MediaControlInputElement(media_controls, kMediaOverflowButton) { - setType(InputTypeNames::button); + setType(input_type_names::kButton); SetShadowPseudoId(AtomicString("-internal-media-controls-overflow-button")); SetIsWanted(false); } @@ -43,8 +43,8 @@ void MediaControlOverflowMenuButtonElement::UpdateShownState() { void MediaControlOverflowMenuButtonElement::DefaultEventHandler(Event& event) { // Only respond to a click event if we are not disabled. - if (!hasAttribute(HTMLNames::disabledAttr) && - event.type() == EventTypeNames::click) { + if (!hasAttribute(html_names::kDisabledAttr) && + event.type() == event_type_names::kClick) { if (GetMediaControls().OverflowMenuVisible()) { Platform::Current()->RecordAction( UserMetricsAction("Media.Controls.OverflowClose")); diff --git a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_overflow_menu_list_element.cc b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_overflow_menu_list_element.cc index cb7d4e67ef0..710ecb69070 100644 --- a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_overflow_menu_list_element.cc +++ b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_overflow_menu_list_element.cc @@ -6,10 +6,13 @@ #include "third_party/blink/public/platform/task_type.h" #include "third_party/blink/renderer/core/dom/document.h" +#include "third_party/blink/renderer/core/dom/dom_token_list.h" #include "third_party/blink/renderer/core/dom/events/event.h" +#include "third_party/blink/renderer/modules/media_controls/elements/media_control_consts.h" #include "third_party/blink/renderer/modules/media_controls/elements/media_control_overflow_menu_button_element.h" #include "third_party/blink/renderer/modules/media_controls/media_controls_impl.h" #include "third_party/blink/renderer/platform/histogram.h" +#include "third_party/blink/renderer/platform/wtf/functional.h" namespace blink { @@ -18,6 +21,15 @@ MediaControlOverflowMenuListElement::MediaControlOverflowMenuListElement( : MediaControlPopupMenuElement(media_controls, kMediaOverflowList) { SetShadowPseudoId( AtomicString("-internal-media-controls-overflow-menu-list")); + CloseOverflowMenu(); +} + +void MediaControlOverflowMenuListElement::OpenOverflowMenu() { + classList().Remove(kClosedCSSClass); +} + +void MediaControlOverflowMenuListElement::CloseOverflowMenu() { + classList().Add(kClosedCSSClass); } void MediaControlOverflowMenuListElement::MaybeRecordTimeTaken( @@ -38,7 +50,7 @@ void MediaControlOverflowMenuListElement::MaybeRecordTimeTaken( } void MediaControlOverflowMenuListElement::DefaultEventHandler(Event& event) { - if (event.type() == EventTypeNames::click) + if (event.type() == event_type_names::kClick) event.SetDefaultHandled(); MediaControlPopupMenuElement::DefaultEventHandler(event); @@ -47,6 +59,11 @@ void MediaControlOverflowMenuListElement::DefaultEventHandler(Event& event) { void MediaControlOverflowMenuListElement::SetIsWanted(bool wanted) { MediaControlPopupMenuElement::SetIsWanted(wanted); + if (wanted) + OpenOverflowMenu(); + else if (!GetMediaControls().TextTrackListIsWanted()) + CloseOverflowMenu(); + // Record the time the overflow menu was shown to a histogram. if (wanted) { DCHECK(!time_shown_); diff --git a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_overflow_menu_list_element.h b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_overflow_menu_list_element.h index 4da049d2d2f..3a8d38dabc1 100644 --- a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_overflow_menu_list_element.h +++ b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_overflow_menu_list_element.h @@ -7,7 +7,7 @@ #include "base/optional.h" #include "third_party/blink/renderer/modules/media_controls/elements/media_control_popup_menu_element.h" -#include "third_party/blink/renderer/platform/web_task_runner.h" +#include "third_party/blink/renderer/platform/scheduler/public/post_cancellable_task.h" #include "third_party/blink/renderer/platform/wtf/time.h" namespace blink { @@ -21,6 +21,9 @@ class MediaControlOverflowMenuListElement final public: explicit MediaControlOverflowMenuListElement(MediaControlsImpl&); + void OpenOverflowMenu(); + void CloseOverflowMenu(); + // Override MediaControlPopupMenuElement void SetIsWanted(bool) final; Element* PopupAnchor() const final; diff --git a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_overlay_enclosure_element.cc b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_overlay_enclosure_element.cc index 1e80f7fcd8b..f66633f48e5 100644 --- a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_overlay_enclosure_element.cc +++ b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_overlay_enclosure_element.cc @@ -18,10 +18,10 @@ MediaControlOverlayEnclosureElement::MediaControlOverlayEnclosureElement( void MediaControlOverlayEnclosureElement::DefaultEventHandler(Event& event) { // When the user interacts with the media element, the Cast overlay button // needs to be shown. - if (event.type() == EventTypeNames::gesturetap || - event.type() == EventTypeNames::click || - event.type() == EventTypeNames::pointerover || - event.type() == EventTypeNames::pointermove) { + if (event.type() == event_type_names::kGesturetap || + event.type() == event_type_names::kClick || + event.type() == event_type_names::kPointerover || + event.type() == event_type_names::kPointermove) { GetMediaControls().ShowOverlayCastButtonIfNeeded(); } diff --git a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_overlay_play_button_element.cc b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_overlay_play_button_element.cc index aa454a87048..0c1668197c1 100644 --- a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_overlay_play_button_element.cc +++ b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_overlay_play_button_element.cc @@ -39,7 +39,7 @@ MediaControlOverlayPlayButtonElement::MediaControlOverlayPlayButtonElement( : MediaControlInputElement(media_controls, kMediaPlayButton), internal_button_(nullptr) { EnsureUserAgentShadowRoot(); - setType(InputTypeNames::button); + setType(input_type_names::kButton); SetShadowPseudoId(AtomicString("-webkit-media-controls-overlay-play-button")); if (MediaControlsImpl::IsModern()) { @@ -76,8 +76,7 @@ void MediaControlOverlayPlayButtonElement::MaybePlayPause() { // state. This allows potential recovery for transient network and decoder // resource issues. const String& url = MediaElement().currentSrc().GetString(); - if (MediaElement().error() && !HTMLMediaElement::IsMediaStreamURL(url) && - !HTMLMediaSource::Lookup(url)) { + if (MediaElement().error() && !HTMLMediaSource::Lookup(url)) { MediaElement().load(); } @@ -92,7 +91,7 @@ void MediaControlOverlayPlayButtonElement::MaybePlayPause() { } void MediaControlOverlayPlayButtonElement::DefaultEventHandler(Event& event) { - if (event.type() == EventTypeNames::click) { + if (event.type() == event_type_names::kClick) { event.SetDefaultHandled(); MaybePlayPause(); } diff --git a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_panel_element.cc b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_panel_element.cc index 22848fc0ddd..2a6da96b45d 100644 --- a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_panel_element.cc +++ b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_panel_element.cc @@ -10,6 +10,7 @@ #include "third_party/blink/renderer/core/html/media/html_media_element.h" #include "third_party/blink/renderer/modules/media_controls/elements/media_control_elements_helper.h" #include "third_party/blink/renderer/modules/media_controls/media_controls_impl.h" +#include "third_party/blink/renderer/platform/wtf/functional.h" namespace blink { @@ -40,14 +41,15 @@ class MediaControlPanelElement::TransitionEventListener final DCHECK(!attached_); attached_ = true; - element_->addEventListener(EventTypeNames::transitionend, this, false); + element_->addEventListener(event_type_names::kTransitionend, this, false); } void Detach() { DCHECK(attached_); attached_ = false; - element_->removeEventListener(EventTypeNames::transitionend, this, false); + element_->removeEventListener(event_type_names::kTransitionend, this, + false); } bool IsAttached() const { return attached_; } @@ -62,8 +64,11 @@ class MediaControlPanelElement::TransitionEventListener final } private: - void handleEvent(ExecutionContext* context, Event* event) override { - if (event->type() == EventTypeNames::transitionend) { + void Invoke(ExecutionContext* context, Event* event) override { + if (event->target() != element_) + return; + + if (event->type() == event_type_names::kTransitionend) { callback_.Run(); return; } @@ -150,10 +155,11 @@ bool MediaControlPanelElement::EventListenerIsAttachedForTest() const { void MediaControlPanelElement::EnsureTransitionEventListener() { // Create the event listener if it doesn't exist. if (!event_listener_) { - event_listener_ = new MediaControlPanelElement::TransitionEventListener( - this, - WTF::BindRepeating(&MediaControlPanelElement::HandleTransitionEndEvent, - WrapWeakPersistent(this))); + event_listener_ = + MakeGarbageCollected<MediaControlPanelElement::TransitionEventListener>( + this, WTF::BindRepeating( + &MediaControlPanelElement::HandleTransitionEndEvent, + WrapWeakPersistent(this))); } // Attach the event listener if we are not attached. @@ -173,7 +179,8 @@ void MediaControlPanelElement::DetachTransitionEventListener() { void MediaControlPanelElement::DefaultEventHandler(Event& event) { // Suppress the media element activation behavior (toggle play/pause) when // any part of the control panel is clicked. - if (event.type() == EventTypeNames::click && !MediaControlsImpl::IsModern()) { + if (event.type() == event_type_names::kClick && + !MediaControlsImpl::IsModern()) { event.SetDefaultHandled(); return; } diff --git a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_panel_element_test.cc b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_panel_element_test.cc index f44fe39f8cb..a6faf0872a9 100644 --- a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_panel_element_test.cc +++ b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_panel_element_test.cc @@ -21,18 +21,21 @@ class MediaControlPanelElementTest : public PageTestBase { // Create page and add a video element with controls. PageTestBase::SetUp(); media_element_ = HTMLVideoElement::Create(GetDocument()); - media_element_->SetBooleanAttribute(HTMLNames::controlsAttr, true); + media_element_->SetBooleanAttribute(html_names::kControlsAttr, true); GetDocument().body()->AppendChild(media_element_); // Create instance of MediaControlInputElement to run tests on. media_controls_ = static_cast<MediaControlsImpl*>(media_element_->GetMediaControls()); ASSERT_NE(media_controls_, nullptr); - panel_element_ = new MediaControlPanelElement(*media_controls_); + panel_element_ = + MakeGarbageCollected<MediaControlPanelElement>(*media_controls_); } protected: - void SimulateTransitionEnd() { TriggerEvent(EventTypeNames::transitionend); } + void SimulateTransitionEnd(Element& element) { + TriggerEvent(element, event_type_names::kTransitionend); + } void ExpectPanelIsDisplayed() { EXPECT_TRUE(GetPanel().IsWanted()); } @@ -52,9 +55,10 @@ class MediaControlPanelElementTest : public PageTestBase { HTMLMediaElement& GetMediaElement() { return *media_element_.Get(); } private: - void TriggerEvent(const AtomicString& name) { + void TriggerEvent(Element& element, const AtomicString& name) { Event* event = Event::Create(name); - GetPanel().DispatchEvent(*event); + event->SetTarget(&element); + GetPanel().FireEventListeners(*event); } Persistent<HTMLMediaElement> media_element_; @@ -63,6 +67,9 @@ class MediaControlPanelElementTest : public PageTestBase { }; TEST_F(MediaControlPanelElementTest, StateTransitions) { + Element* child_div = HTMLDivElement::Create(GetPanel().GetDocument()); + GetPanel().ParserAppendChild(child_div); + // Make sure we are displayed (we are already opaque). GetPanel().SetIsDisplayed(true); ExpectPanelIsDisplayed(); @@ -72,10 +79,15 @@ TEST_F(MediaControlPanelElementTest, StateTransitions) { EventListenerNotCreated(); GetPanel().MakeTransparent(); - // The event listener should now be attached so we should simulate the - // transition end and the panel will be hidden. + // The event listener should now be attached EventListenerAttached(); - SimulateTransitionEnd(); + + // Simulate child div transition end and the panel should not be hidden + SimulateTransitionEnd(*child_div); + ExpectPanelIsDisplayed(); + + // Simulate panel transition end and the panel will be hidden + SimulateTransitionEnd(GetPanel()); ExpectPanelIsNotDisplayed(); // The event listener should be detached. We should now make the panel @@ -86,7 +98,7 @@ TEST_F(MediaControlPanelElementTest, StateTransitions) { // The event listener should now be attached so we should simulate the // transition end event and the panel will be hidden. EventListenerAttached(); - SimulateTransitionEnd(); + SimulateTransitionEnd(GetPanel()); ExpectPanelIsDisplayed(); } diff --git a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_picture_in_picture_button_element.cc b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_picture_in_picture_button_element.cc index 3c6c79872a8..7e1968d6860 100644 --- a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_picture_in_picture_button_element.cc +++ b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_picture_in_picture_button_element.cc @@ -18,7 +18,7 @@ namespace blink { MediaControlPictureInPictureButtonElement:: MediaControlPictureInPictureButtonElement(MediaControlsImpl& media_controls) : MediaControlInputElement(media_controls, kMediaPlayButton) { - setType(InputTypeNames::button); + setType(input_type_names::kButton); SetShadowPseudoId( AtomicString("-internal-media-controls-picture-in-picture-button")); SetIsWanted(false); @@ -66,7 +66,7 @@ const char* MediaControlPictureInPictureButtonElement::GetNameForHistograms() void MediaControlPictureInPictureButtonElement::DefaultEventHandler( Event& event) { - if (event.type() == EventTypeNames::click) { + if (event.type() == event_type_names::kClick) { PictureInPictureControllerImpl& controller = PictureInPictureControllerImpl::From(MediaElement().GetDocument()); diff --git a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_play_button_element.cc b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_play_button_element.cc index e358f0005b7..843c19eb35c 100644 --- a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_play_button_element.cc +++ b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_play_button_element.cc @@ -16,7 +16,7 @@ namespace blink { MediaControlPlayButtonElement::MediaControlPlayButtonElement( MediaControlsImpl& media_controls) : MediaControlInputElement(media_controls, kMediaPlayButton) { - setType(InputTypeNames::button); + setType(input_type_names::kButton); SetShadowPseudoId(AtomicString("-webkit-media-controls-play-button")); } @@ -49,7 +49,7 @@ const char* MediaControlPlayButtonElement::GetNameForHistograms() const { } void MediaControlPlayButtonElement::DefaultEventHandler(Event& event) { - if (event.type() == EventTypeNames::click) { + if (event.type() == event_type_names::kClick) { if (MediaElement().paused()) { Platform::Current()->RecordAction( UserMetricsAction("Media.Controls.Play")); @@ -62,8 +62,7 @@ void MediaControlPlayButtonElement::DefaultEventHandler(Event& event) { // state. This allows potential recovery for transient network and decoder // resource issues. const String& url = MediaElement().currentSrc().GetString(); - if (MediaElement().error() && !HTMLMediaElement::IsMediaStreamURL(url) && - !HTMLMediaSource::Lookup(url)) + if (MediaElement().error() && !HTMLMediaSource::Lookup(url)) MediaElement().load(); MediaElement().TogglePlayState(); diff --git a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_popup_menu_element.cc b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_popup_menu_element.cc index 0cb0d29c3a1..95aace33bc7 100644 --- a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_popup_menu_element.cc +++ b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_popup_menu_element.cc @@ -17,6 +17,7 @@ #include "third_party/blink/renderer/modules/media_controls/elements/media_control_overflow_menu_button_element.h" #include "third_party/blink/renderer/modules/media_controls/media_controls_impl.h" #include "third_party/blink/renderer/platform/keyboard_codes.h" +#include "third_party/blink/renderer/platform/wtf/functional.h" namespace blink { @@ -47,26 +48,28 @@ class MediaControlPopupMenuElement::EventListener final ~EventListener() final = default; void StartListening() { - popup_menu_->addEventListener(EventTypeNames::keydown, this, false); + popup_menu_->addEventListener(event_type_names::kKeydown, this, false); LocalDOMWindow* window = popup_menu_->GetDocument().domWindow(); - window->addEventListener(EventTypeNames::scroll, this, true); + window->addEventListener(event_type_names::kScroll, this, true); if (DOMWindow* outer_window = window->top()) { if (outer_window != window) - outer_window->addEventListener(EventTypeNames::scroll, this, true); - outer_window->addEventListener(EventTypeNames::resize, this, true); + outer_window->addEventListener(event_type_names::kScroll, this, true); + outer_window->addEventListener(event_type_names::kResize, this, true); } } void StopListening() { - popup_menu_->removeEventListener(EventTypeNames::keydown, this, false); + popup_menu_->removeEventListener(event_type_names::kKeydown, this, false); LocalDOMWindow* window = popup_menu_->GetDocument().domWindow(); - window->removeEventListener(EventTypeNames::scroll, this, true); + window->removeEventListener(event_type_names::kScroll, this, true); if (DOMWindow* outer_window = window->top()) { - if (outer_window != window) - outer_window->removeEventListener(EventTypeNames::scroll, this, true); - outer_window->removeEventListener(EventTypeNames::resize, this, true); + if (outer_window != window) { + outer_window->removeEventListener(event_type_names::kScroll, this, + true); + } + outer_window->removeEventListener(event_type_names::kResize, this, true); } } @@ -80,8 +83,9 @@ class MediaControlPopupMenuElement::EventListener final } private: - void handleEvent(ExecutionContext*, Event* event) final { - if (event->type() == EventTypeNames::keydown && event->IsKeyboardEvent()) { + void Invoke(ExecutionContext*, Event* event) final { + if (event->type() == event_type_names::kKeydown && + event->IsKeyboardEvent()) { KeyboardEvent* keyboard_event = ToKeyboardEvent(event); bool handled = true; @@ -111,8 +115,8 @@ class MediaControlPopupMenuElement::EventListener final event->stopPropagation(); event->SetDefaultHandled(); } - } else if (event->type() == EventTypeNames::resize || - event->type() == EventTypeNames::scroll) { + } else if (event->type() == event_type_names::kResize || + event->type() == event_type_names::kScroll) { popup_menu_->SetIsWanted(false); } } @@ -131,7 +135,7 @@ void MediaControlPopupMenuElement::SetIsWanted(bool wanted) { SelectFirstItem(); if (!event_listener_) - event_listener_ = new EventListener(this); + event_listener_ = MakeGarbageCollected<EventListener>(this); event_listener_->StartListening(); } else { if (event_listener_) @@ -144,15 +148,15 @@ void MediaControlPopupMenuElement::OnItemSelected() { } void MediaControlPopupMenuElement::DefaultEventHandler(Event& event) { - if (event.type() == EventTypeNames::pointermove) { + if (event.type() == event_type_names::kPointermove) { ToElement(event.target()->ToNode())->focus(); - } else if (event.type() == EventTypeNames::focusout) { + } else if (event.type() == event_type_names::kFocusout) { GetDocument() .GetTaskRunner(TaskType::kMediaElementEvent) ->PostTask(FROM_HERE, WTF::Bind(&MediaControlPopupMenuElement::HideIfNotFocused, WrapWeakPersistent(this))); - } else if (event.type() == EventTypeNames::click) { + } else if (event.type() == event_type_names::kClick) { OnItemSelected(); event.stopPropagation(); diff --git a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_scrubbing_message_element_test.cc b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_scrubbing_message_element_test.cc index 127612e505b..b2a1718ab1a 100644 --- a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_scrubbing_message_element_test.cc +++ b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_scrubbing_message_element_test.cc @@ -26,7 +26,7 @@ class MediaControlScrubbingMessageElementTest : public PageTestBase { // Create page and add a video element with controls. PageTestBase::SetUp(); media_element_ = HTMLVideoElement::Create(GetDocument()); - media_element_->SetBooleanAttribute(HTMLNames::controlsAttr, true); + media_element_->SetBooleanAttribute(html_names::kControlsAttr, true); GetDocument().body()->AppendChild(media_element_); // Create instance of MediaControlScrubbingMessageElement to run tests on. @@ -34,7 +34,8 @@ class MediaControlScrubbingMessageElementTest : public PageTestBase { static_cast<MediaControlsImpl*>(media_element_->GetMediaControls()); ASSERT_NE(nullptr, media_controls_); message_element_ = - new MediaControlScrubbingMessageElement(*media_controls_); + MakeGarbageCollected<MediaControlScrubbingMessageElement>( + *media_controls_); } protected: diff --git a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_slider_element.cc b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_slider_element.cc index e1f55e00caf..e587c04e10c 100644 --- a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_slider_element.cc +++ b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_slider_element.cc @@ -88,9 +88,10 @@ MediaControlSliderElement::MediaControlSliderElement( segment_highlight_after_(nullptr), resize_observer_(ResizeObserver::Create( GetDocument(), - new MediaControlSliderElementResizeObserverDelegate(this))) { - setType(InputTypeNames::range); - setAttribute(HTMLNames::stepAttr, "any"); + MakeGarbageCollected<MediaControlSliderElementResizeObserverDelegate>( + this))) { + setType(input_type_names::kRange); + setAttribute(html_names::kStepAttr, "any"); resize_observer_->observe(this); } diff --git a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_text_track_list_element.cc b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_text_track_list_element.cc index c04a9512b28..ec67e954426 100644 --- a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_text_track_list_element.cc +++ b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_text_track_list_element.cc @@ -63,6 +63,9 @@ void MediaControlTextTrackListElement::SetIsWanted(bool wanted) { if (wanted) RefreshTextTrackListMenu(); + if (!wanted && !GetMediaControls().OverflowMenuIsWanted()) + GetMediaControls().CloseOverflowMenu(); + MediaControlPopupMenuElement::SetIsWanted(wanted); } @@ -71,12 +74,12 @@ Element* MediaControlTextTrackListElement::PopupAnchor() const { } void MediaControlTextTrackListElement::DefaultEventHandler(Event& event) { - if (event.type() == EventTypeNames::click) { + if (event.type() == event_type_names::kClick) { // This handles the back button click. Clicking on a menu item triggers the // change event instead. GetMediaControls().ToggleOverflowMenu(); event.SetDefaultHandled(); - } else if (event.type() == EventTypeNames::change) { + } else if (event.type() == event_type_names::kChange) { // Identify which input element was selected and set track to showing Node* target = event.target()->ToNode(); if (!target || !target->IsElementNode()) @@ -108,7 +111,7 @@ Element* MediaControlTextTrackListElement::CreateTextTrackListItem( HTMLInputElement::Create(GetDocument(), CreateElementFlags()); track_item_input->SetShadowPseudoId( AtomicString("-internal-media-controls-text-track-list-item-input")); - track_item_input->setType(InputTypeNames::checkbox); + track_item_input->setType(input_type_names::kCheckbox); track_item_input->SetIntegralAttribute(TrackIndexAttrName(), track_index); if (!MediaElement().TextTracksVisible()) { if (!track) 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); } diff --git a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_timeline_element_test.cc b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_timeline_element_test.cc index b0697b0be55..9e1eb2d0d8b 100644 --- a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_timeline_element_test.cc +++ b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_timeline_element_test.cc @@ -17,21 +17,23 @@ namespace blink { class MediaControlTimelineElementTest : public PageTestBase { public: - static PointerEventInit GetValidPointerEventInit() { - PointerEventInit init; - init.setIsPrimary(true); - init.setButton(static_cast<int>(WebPointerProperties::Button::kLeft)); + static PointerEventInit* GetValidPointerEventInit() { + PointerEventInit* init = PointerEventInit::Create(); + init->setIsPrimary(true); + init->setButton(static_cast<int>(WebPointerProperties::Button::kLeft)); return init; } - static TouchEventInit GetValidTouchEventInit() { return TouchEventInit(); } + static TouchEventInit* GetValidTouchEventInit() { + return TouchEventInit::Create(); + } void SetUp() override { PageTestBase::SetUp(IntSize(100, 100)); video_ = HTMLVideoElement::Create(GetDocument()); - controls_ = new MediaControlsImpl(*video_); - timeline_ = new MediaControlTimelineElement(*controls_); + controls_ = MakeGarbageCollected<MediaControlsImpl>(*video_); + timeline_ = MakeGarbageCollected<MediaControlTimelineElement>(*controls_); controls_->InitializeControls(); @@ -63,8 +65,8 @@ TEST_F(MediaControlTimelineElementTest, PointerDownRightClickNoOp) { Video()->Play(); ASSERT_FALSE(Video()->paused()); - PointerEventInit init = GetValidPointerEventInit(); - init.setButton(static_cast<int>(WebPointerProperties::Button::kRight)); + PointerEventInit* init = GetValidPointerEventInit(); + init->setButton(static_cast<int>(WebPointerProperties::Button::kRight)); Timeline()->DispatchEvent(*PointerEvent::Create("pointerdown", init)); EXPECT_FALSE(Video()->paused()); } @@ -73,8 +75,8 @@ TEST_F(MediaControlTimelineElementTest, PointerDownNotPrimaryNoOp) { Video()->Play(); ASSERT_FALSE(Video()->paused()); - PointerEventInit init = GetValidPointerEventInit(); - init.setIsPrimary(false); + PointerEventInit* init = GetValidPointerEventInit(); + init->setIsPrimary(false); Timeline()->DispatchEvent(*PointerEvent::Create("pointerdown", init)); EXPECT_FALSE(Video()->paused()); } @@ -97,8 +99,8 @@ TEST_F(MediaControlTimelineElementTest, PointerUpRightClickNoOp) { Timeline()->DispatchEvent( *PointerEvent::Create("pointerdown", GetValidPointerEventInit())); - PointerEventInit init = GetValidPointerEventInit(); - init.setButton(static_cast<int>(WebPointerProperties::Button::kRight)); + PointerEventInit* init = GetValidPointerEventInit(); + init->setButton(static_cast<int>(WebPointerProperties::Button::kRight)); Timeline()->DispatchEvent(*PointerEvent::Create("pointerup", init)); EXPECT_TRUE(Video()->paused()); } @@ -110,8 +112,8 @@ TEST_F(MediaControlTimelineElementTest, PointerUpNotPrimaryNoOp) { Timeline()->DispatchEvent( *PointerEvent::Create("pointerdown", GetValidPointerEventInit())); - PointerEventInit init = GetValidPointerEventInit(); - init.setIsPrimary(false); + PointerEventInit* init = GetValidPointerEventInit(); + init->setIsPrimary(false); Timeline()->DispatchEvent(*PointerEvent::Create("pointerup", init)); EXPECT_TRUE(Video()->paused()); } diff --git a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_toggle_closed_captions_button_element.cc b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_toggle_closed_captions_button_element.cc index fae04b5917a..3b9c4470345 100644 --- a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_toggle_closed_captions_button_element.cc +++ b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_toggle_closed_captions_button_element.cc @@ -46,7 +46,7 @@ MediaControlToggleClosedCaptionsButtonElement:: MediaControlToggleClosedCaptionsButtonElement( MediaControlsImpl& media_controls) : MediaControlInputElement(media_controls, kMediaShowClosedCaptionsButton) { - setType(InputTypeNames::button); + setType(input_type_names::kButton); SetShadowPseudoId( AtomicString("-webkit-media-controls-toggle-closed-captions-button")); SetClass(kClosedCaptionClass, UseClosedCaptionsIcon()); @@ -104,7 +104,7 @@ MediaControlToggleClosedCaptionsButtonElement::GetNameForHistograms() const { void MediaControlToggleClosedCaptionsButtonElement::DefaultEventHandler( Event& event) { - if (event.type() == EventTypeNames::click) { + if (event.type() == event_type_names::kClick) { if (MediaElement().textTracks()->length() == 1) { // If only one track exists, toggle it on/off if (MediaElement().textTracks()->HasShowingTracks()) diff --git a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_toggle_closed_captions_button_element_test.cc b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_toggle_closed_captions_button_element_test.cc index 76086f07951..aa591e2fd23 100644 --- a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_toggle_closed_captions_button_element_test.cc +++ b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_toggle_closed_captions_button_element_test.cc @@ -39,7 +39,8 @@ class MediaControlToggleClosedCaptionsButtonElementTest : public PageTestBase { media_controls_ = static_cast<MediaControlsImpl*>(media_element_->GetMediaControls()); captions_overflow_button_ = - new MediaControlToggleClosedCaptionsButtonElement(*media_controls_); + MakeGarbageCollected<MediaControlToggleClosedCaptionsButtonElement>( + *media_controls_); } protected: diff --git a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_volume_slider_element.cc b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_volume_slider_element.cc index 2ffacc5f603..c5dc536c6d0 100644 --- a/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_volume_slider_element.cc +++ b/chromium/third_party/blink/renderer/modules/media_controls/elements/media_control_volume_slider_element.cc @@ -10,21 +10,16 @@ #include "third_party/blink/renderer/core/html/media/html_media_element.h" #include "third_party/blink/renderer/core/html_names.h" #include "third_party/blink/renderer/core/layout/layout_object.h" +#include "third_party/blink/renderer/modules/media_controls/elements/media_control_consts.h" #include "third_party/blink/renderer/modules/media_controls/elements/media_control_elements_helper.h" #include "third_party/blink/renderer/modules/media_controls/media_controls_impl.h" namespace blink { -namespace { - -const char kClosedCSSClass[] = "closed"; - -} // anonymous namespace - MediaControlVolumeSliderElement::MediaControlVolumeSliderElement( MediaControlsImpl& media_controls) : MediaControlSliderElement(media_controls, kMediaVolumeSlider) { - setAttribute(HTMLNames::maxAttr, "1"); + setAttribute(html_names::kMaxAttr, "1"); SetShadowPseudoId(AtomicString("-webkit-media-controls-volume-slider")); SetVolumeInternal(MediaElement().volume()); @@ -78,30 +73,30 @@ void MediaControlVolumeSliderElement::DefaultEventHandler(Event& event) { MaybeRecordInteracted(); } - if (event.type() == EventTypeNames::pointerdown) { + if (event.type() == event_type_names::kPointerdown) { Platform::Current()->RecordAction( UserMetricsAction("Media.Controls.VolumeChangeBegin")); } - if (event.type() == EventTypeNames::pointerup) { + if (event.type() == event_type_names::kPointerup) { Platform::Current()->RecordAction( UserMetricsAction("Media.Controls.VolumeChangeEnd")); } - if (event.type() == EventTypeNames::input) { + if (event.type() == event_type_names::kInput) { double volume = value().ToDouble(); MediaElement().setVolume(volume); MediaElement().setMuted(false); SetVolumeInternal(volume); } - if (event.type() == EventTypeNames::mouseover || - event.type() == EventTypeNames::focus) { + if (event.type() == event_type_names::kMouseover || + event.type() == event_type_names::kFocus) { GetMediaControls().OpenVolumeSliderIfNecessary(); } - if (event.type() == EventTypeNames::mouseout || - event.type() == EventTypeNames::blur) { + if (event.type() == event_type_names::kMouseout || + event.type() == event_type_names::kBlur) { GetMediaControls().CloseVolumeSliderIfNecessary(); } } |