Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2025)

Side by Side Diff: third_party/WebKit/Source/core/html/shadow/MediaControls.cpp

Issue 2293273002: Add a download button to the media player (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@media-controls
Patch Set: addressed comments Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2011, 2012 Apple Inc. All rights reserved. 2 * Copyright (C) 2011, 2012 Apple Inc. All rights reserved.
3 * Copyright (C) 2011, 2012 Google Inc. All rights reserved. 3 * Copyright (C) 2011, 2012 Google Inc. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
113 , m_timeline(nullptr) 113 , m_timeline(nullptr)
114 , m_currentTimeDisplay(nullptr) 114 , m_currentTimeDisplay(nullptr)
115 , m_durationDisplay(nullptr) 115 , m_durationDisplay(nullptr)
116 , m_muteButton(nullptr) 116 , m_muteButton(nullptr)
117 , m_volumeSlider(nullptr) 117 , m_volumeSlider(nullptr)
118 , m_toggleClosedCaptionsButton(nullptr) 118 , m_toggleClosedCaptionsButton(nullptr)
119 , m_textTrackList(nullptr) 119 , m_textTrackList(nullptr)
120 , m_overflowList(nullptr) 120 , m_overflowList(nullptr)
121 , m_castButton(nullptr) 121 , m_castButton(nullptr)
122 , m_fullscreenButton(nullptr) 122 , m_fullscreenButton(nullptr)
123 , m_downloadButton(nullptr)
123 , m_hideMediaControlsTimer(this, &MediaControls::hideMediaControlsTimerFired ) 124 , m_hideMediaControlsTimer(this, &MediaControls::hideMediaControlsTimerFired )
124 , m_hideTimerBehaviorFlags(IgnoreNone) 125 , m_hideTimerBehaviorFlags(IgnoreNone)
125 , m_isMouseOverControls(false) 126 , m_isMouseOverControls(false)
126 , m_isPausedForScrubbing(false) 127 , m_isPausedForScrubbing(false)
127 , m_panelWidthChangedTimer(this, &MediaControls::panelWidthChangedTimerFired ) 128 , m_panelWidthChangedTimer(this, &MediaControls::panelWidthChangedTimerFired )
128 , m_panelWidth(0) 129 , m_panelWidth(0)
129 , m_allowHiddenVolumeControls(RuntimeEnabledFeatures::newMediaPlaybackUiEnab led()) 130 , m_allowHiddenVolumeControls(RuntimeEnabledFeatures::newMediaPlaybackUiEnab led())
130 { 131 {
131 } 132 }
132 133
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
227 panel->appendChild(toggleClosedCaptionsButton); 228 panel->appendChild(toggleClosedCaptionsButton);
228 229
229 MediaControlCastButtonElement* castButton = MediaControlCastButtonElement::c reate(*this, false); 230 MediaControlCastButtonElement* castButton = MediaControlCastButtonElement::c reate(*this, false);
230 m_castButton = castButton; 231 m_castButton = castButton;
231 panel->appendChild(castButton); 232 panel->appendChild(castButton);
232 233
233 MediaControlFullscreenButtonElement* fullscreenButton = MediaControlFullscre enButtonElement::create(*this); 234 MediaControlFullscreenButtonElement* fullscreenButton = MediaControlFullscre enButtonElement::create(*this);
234 m_fullscreenButton = fullscreenButton; 235 m_fullscreenButton = fullscreenButton;
235 panel->appendChild(fullscreenButton); 236 panel->appendChild(fullscreenButton);
236 237
238 MediaControlDownloadButtonElement* downloadButton = MediaControlDownloadButt onElement::create(*this, &document());
239 m_downloadButton = downloadButton;
240 panel->appendChild(downloadButton);
241
237 m_panel = panel; 242 m_panel = panel;
238 enclosure->appendChild(panel); 243 enclosure->appendChild(panel);
239 244
240 m_enclosure = enclosure; 245 m_enclosure = enclosure;
241 appendChild(enclosure); 246 appendChild(enclosure);
242 247
243 MediaControlTextTrackListElement* textTrackList = MediaControlTextTrackListE lement::create(*this); 248 MediaControlTextTrackListElement* textTrackList = MediaControlTextTrackListE lement::create(*this);
244 m_textTrackList = textTrackList; 249 m_textTrackList = textTrackList;
245 appendChild(textTrackList); 250 appendChild(textTrackList);
246 251
247 MediaControlOverflowMenuButtonElement* overflowMenu = MediaControlOverflowMe nuButtonElement::create(*this); 252 MediaControlOverflowMenuButtonElement* overflowMenu = MediaControlOverflowMe nuButtonElement::create(*this);
248 m_overflowMenu = overflowMenu; 253 m_overflowMenu = overflowMenu;
249 panel->appendChild(overflowMenu); 254 panel->appendChild(overflowMenu);
250 255
251 MediaControlOverflowMenuListElement* overflowList = MediaControlOverflowMenu ListElement::create(*this); 256 MediaControlOverflowMenuListElement* overflowList = MediaControlOverflowMenu ListElement::create(*this);
252 m_overflowList = overflowList; 257 m_overflowList = overflowList;
253 appendChild(overflowList); 258 appendChild(overflowList);
254 259
255 // The order in which we append elements to the overflow list does matter. 260 // The order in which we append elements to the overflow list does matter.
256 m_overflowList->appendChild(m_muteButton->createOverflowElement(*this, Media ControlMuteButtonElement::create(*this))); 261 m_overflowList->appendChild(m_muteButton->createOverflowElement(*this, Media ControlMuteButtonElement::create(*this)));
257 m_overflowList->appendChild(m_castButton->createOverflowElement(*this, Media ControlCastButtonElement::create(*this, false))); 262 m_overflowList->appendChild(m_castButton->createOverflowElement(*this, Media ControlCastButtonElement::create(*this, false)));
258 m_overflowList->appendChild(m_toggleClosedCaptionsButton->createOverflowElem ent(*this, MediaControlToggleClosedCaptionsButtonElement::create(*this))); 263 m_overflowList->appendChild(m_toggleClosedCaptionsButton->createOverflowElem ent(*this, MediaControlToggleClosedCaptionsButtonElement::create(*this)));
259 m_overflowList->appendChild(m_fullscreenButton->createOverflowElement(*this, MediaControlFullscreenButtonElement::create(*this))); 264 m_overflowList->appendChild(m_fullscreenButton->createOverflowElement(*this, MediaControlFullscreenButtonElement::create(*this)));
260 m_overflowList->appendChild(m_playButton->createOverflowElement(*this, Media ControlPlayButtonElement::create(*this))); 265 m_overflowList->appendChild(m_playButton->createOverflowElement(*this, Media ControlPlayButtonElement::create(*this)));
266 m_overflowList->appendChild(m_downloadButton->createOverflowElement(*this, M ediaControlDownloadButtonElement::create(*this, &document())));
261 } 267 }
262 268
263 void MediaControls::reset() 269 void MediaControls::reset()
264 { 270 {
265 EventDispatchForbiddenScope::AllowUserAgentEvents allowEventsInShadow; 271 EventDispatchForbiddenScope::AllowUserAgentEvents allowEventsInShadow;
266 const bool useNewUi = RuntimeEnabledFeatures::newMediaPlaybackUiEnabled(); 272 const bool useNewUi = RuntimeEnabledFeatures::newMediaPlaybackUiEnabled();
267 BatchedControlUpdate batch(this); 273 BatchedControlUpdate batch(this);
268 274
269 m_allowHiddenVolumeControls = useNewUi; 275 m_allowHiddenVolumeControls = useNewUi;
270 276
(...skipping 22 matching lines...) Expand all
293 m_timeline->setDuration(duration); 299 m_timeline->setDuration(duration);
294 m_timeline->setPosition(mediaElement().currentTime()); 300 m_timeline->setPosition(mediaElement().currentTime());
295 301
296 updateVolume(); 302 updateVolume();
297 303
298 refreshClosedCaptionsButtonVisibility(); 304 refreshClosedCaptionsButtonVisibility();
299 305
300 m_fullscreenButton->setIsWanted(shouldShowFullscreenButton(mediaElement())); 306 m_fullscreenButton->setIsWanted(shouldShowFullscreenButton(mediaElement()));
301 307
302 refreshCastButtonVisibilityWithoutUpdate(); 308 refreshCastButtonVisibilityWithoutUpdate();
309
310 if (RuntimeEnabledFeatures::mediaControlsDownloadButtonEnabled()) {
311 m_downloadButton->setIsWanted(m_downloadButton->shouldDisplayDownloadBut ton());
312 }
mlamouri (slow - plz ping) 2016/09/12 11:06:25 style: no { }
kdsilva 2016/09/12 17:25:49 Done.
303 } 313 }
304 314
305 LayoutObject* MediaControls::layoutObjectForTextTrackLayout() 315 LayoutObject* MediaControls::layoutObjectForTextTrackLayout()
306 { 316 {
307 return m_panel->layoutObject(); 317 return m_panel->layoutObject();
308 } 318 }
309 319
310 void MediaControls::show() 320 void MediaControls::show()
311 { 321 {
312 makeOpaque(); 322 makeOpaque();
(...skipping 387 matching lines...) Expand 10 before | Expand all | Expand 10 after
700 // won't benefit from that anwyay, we just do it here like JS will. 710 // won't benefit from that anwyay, we just do it here like JS will.
701 711
702 if (!RuntimeEnabledFeatures::newMediaPlaybackUiEnabled()) 712 if (!RuntimeEnabledFeatures::newMediaPlaybackUiEnabled())
703 return; 713 return;
704 714
705 // Controls that we'll hide / show, in order of decreasing priority. 715 // Controls that we'll hide / show, in order of decreasing priority.
706 MediaControlElement* elements[] = { 716 MediaControlElement* elements[] = {
707 // Exclude m_overflowMenu; we handle it specially. 717 // Exclude m_overflowMenu; we handle it specially.
708 m_playButton.get(), 718 m_playButton.get(),
709 m_fullscreenButton.get(), 719 m_fullscreenButton.get(),
720 m_downloadButton.get(),
710 m_toggleClosedCaptionsButton.get(), 721 m_toggleClosedCaptionsButton.get(),
711 m_timeline.get(), 722 m_timeline.get(),
712 m_currentTimeDisplay.get(), 723 m_currentTimeDisplay.get(),
713 m_volumeSlider.get(), 724 m_volumeSlider.get(),
714 m_castButton.get(), 725 m_castButton.get(),
715 m_muteButton.get(), 726 m_muteButton.get(),
716 m_durationDisplay.get(), 727 m_durationDisplay.get(),
717 }; 728 };
718 729
719 int usedWidth = 0; 730 int usedWidth = 0;
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
817 if (LayoutObject* layoutObject = element->layoutObject()) 828 if (LayoutObject* layoutObject = element->layoutObject())
818 layoutObject->setShouldDoFullPaintInvalidation(); 829 layoutObject->setShouldDoFullPaintInvalidation();
819 } 830 }
820 831
821 void MediaControls::networkStateChanged() 832 void MediaControls::networkStateChanged()
822 { 833 {
823 invalidate(m_playButton); 834 invalidate(m_playButton);
824 invalidate(m_overlayPlayButton); 835 invalidate(m_overlayPlayButton);
825 invalidate(m_muteButton); 836 invalidate(m_muteButton);
826 invalidate(m_fullscreenButton); 837 invalidate(m_fullscreenButton);
838 invalidate(m_downloadButton);
827 invalidate(m_timeline); 839 invalidate(m_timeline);
828 invalidate(m_volumeSlider); 840 invalidate(m_volumeSlider);
829 } 841 }
830 842
831 bool MediaControls::overflowMenuVisible() 843 bool MediaControls::overflowMenuVisible()
832 { 844 {
833 return m_overflowList->isWanted(); 845 return m_overflowList->isWanted();
834 } 846 }
835 847
836 void MediaControls::toggleOverflowMenu() 848 void MediaControls::toggleOverflowMenu()
837 { 849 {
838 m_overflowList->setIsWanted(!m_overflowList->isWanted()); 850 m_overflowList->setIsWanted(!m_overflowList->isWanted());
839 } 851 }
840 852
841 DEFINE_TRACE(MediaControls) 853 DEFINE_TRACE(MediaControls)
842 { 854 {
843 visitor->trace(m_mediaElement); 855 visitor->trace(m_mediaElement);
844 visitor->trace(m_panel); 856 visitor->trace(m_panel);
845 visitor->trace(m_overlayPlayButton); 857 visitor->trace(m_overlayPlayButton);
846 visitor->trace(m_overlayEnclosure); 858 visitor->trace(m_overlayEnclosure);
847 visitor->trace(m_playButton); 859 visitor->trace(m_playButton);
848 visitor->trace(m_currentTimeDisplay); 860 visitor->trace(m_currentTimeDisplay);
849 visitor->trace(m_timeline); 861 visitor->trace(m_timeline);
850 visitor->trace(m_muteButton); 862 visitor->trace(m_muteButton);
851 visitor->trace(m_volumeSlider); 863 visitor->trace(m_volumeSlider);
852 visitor->trace(m_toggleClosedCaptionsButton); 864 visitor->trace(m_toggleClosedCaptionsButton);
853 visitor->trace(m_fullscreenButton); 865 visitor->trace(m_fullscreenButton);
866 visitor->trace(m_downloadButton);
854 visitor->trace(m_durationDisplay); 867 visitor->trace(m_durationDisplay);
855 visitor->trace(m_enclosure); 868 visitor->trace(m_enclosure);
856 visitor->trace(m_textTrackList); 869 visitor->trace(m_textTrackList);
857 visitor->trace(m_overflowMenu); 870 visitor->trace(m_overflowMenu);
858 visitor->trace(m_overflowList); 871 visitor->trace(m_overflowList);
859 visitor->trace(m_castButton); 872 visitor->trace(m_castButton);
860 visitor->trace(m_overlayCastButton); 873 visitor->trace(m_overlayCastButton);
861 HTMLDivElement::trace(visitor); 874 HTMLDivElement::trace(visitor);
862 } 875 }
863 876
864 } // namespace blink 877 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698