OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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()); |
303 } | 312 } |
304 | 313 |
305 LayoutObject* MediaControls::layoutObjectForTextTrackLayout() | 314 LayoutObject* MediaControls::layoutObjectForTextTrackLayout() |
306 { | 315 { |
307 return m_panel->layoutObject(); | 316 return m_panel->layoutObject(); |
308 } | 317 } |
309 | 318 |
310 void MediaControls::show() | 319 void MediaControls::show() |
311 { | 320 { |
312 makeOpaque(); | 321 makeOpaque(); |
(...skipping 387 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
700 // won't benefit from that anwyay, we just do it here like JS will. | 709 // won't benefit from that anwyay, we just do it here like JS will. |
701 | 710 |
702 if (!RuntimeEnabledFeatures::newMediaPlaybackUiEnabled()) | 711 if (!RuntimeEnabledFeatures::newMediaPlaybackUiEnabled()) |
703 return; | 712 return; |
704 | 713 |
705 // Controls that we'll hide / show, in order of decreasing priority. | 714 // Controls that we'll hide / show, in order of decreasing priority. |
706 MediaControlElement* elements[] = { | 715 MediaControlElement* elements[] = { |
707 // Exclude m_overflowMenu; we handle it specially. | 716 // Exclude m_overflowMenu; we handle it specially. |
708 m_playButton.get(), | 717 m_playButton.get(), |
709 m_fullscreenButton.get(), | 718 m_fullscreenButton.get(), |
| 719 m_downloadButton.get(), |
710 m_toggleClosedCaptionsButton.get(), | 720 m_toggleClosedCaptionsButton.get(), |
711 m_timeline.get(), | 721 m_timeline.get(), |
712 m_currentTimeDisplay.get(), | 722 m_currentTimeDisplay.get(), |
713 m_volumeSlider.get(), | 723 m_volumeSlider.get(), |
714 m_castButton.get(), | 724 m_castButton.get(), |
715 m_muteButton.get(), | 725 m_muteButton.get(), |
716 m_durationDisplay.get(), | 726 m_durationDisplay.get(), |
717 }; | 727 }; |
718 | 728 |
719 int usedWidth = 0; | 729 int usedWidth = 0; |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
817 if (LayoutObject* layoutObject = element->layoutObject()) | 827 if (LayoutObject* layoutObject = element->layoutObject()) |
818 layoutObject->setShouldDoFullPaintInvalidation(); | 828 layoutObject->setShouldDoFullPaintInvalidation(); |
819 } | 829 } |
820 | 830 |
821 void MediaControls::networkStateChanged() | 831 void MediaControls::networkStateChanged() |
822 { | 832 { |
823 invalidate(m_playButton); | 833 invalidate(m_playButton); |
824 invalidate(m_overlayPlayButton); | 834 invalidate(m_overlayPlayButton); |
825 invalidate(m_muteButton); | 835 invalidate(m_muteButton); |
826 invalidate(m_fullscreenButton); | 836 invalidate(m_fullscreenButton); |
| 837 invalidate(m_downloadButton); |
827 invalidate(m_timeline); | 838 invalidate(m_timeline); |
828 invalidate(m_volumeSlider); | 839 invalidate(m_volumeSlider); |
829 } | 840 } |
830 | 841 |
831 bool MediaControls::overflowMenuVisible() | 842 bool MediaControls::overflowMenuVisible() |
832 { | 843 { |
833 return m_overflowList->isWanted(); | 844 return m_overflowList->isWanted(); |
834 } | 845 } |
835 | 846 |
836 void MediaControls::toggleOverflowMenu() | 847 void MediaControls::toggleOverflowMenu() |
837 { | 848 { |
838 m_overflowList->setIsWanted(!m_overflowList->isWanted()); | 849 m_overflowList->setIsWanted(!m_overflowList->isWanted()); |
839 } | 850 } |
840 | 851 |
841 DEFINE_TRACE(MediaControls) | 852 DEFINE_TRACE(MediaControls) |
842 { | 853 { |
843 visitor->trace(m_mediaElement); | 854 visitor->trace(m_mediaElement); |
844 visitor->trace(m_panel); | 855 visitor->trace(m_panel); |
845 visitor->trace(m_overlayPlayButton); | 856 visitor->trace(m_overlayPlayButton); |
846 visitor->trace(m_overlayEnclosure); | 857 visitor->trace(m_overlayEnclosure); |
847 visitor->trace(m_playButton); | 858 visitor->trace(m_playButton); |
848 visitor->trace(m_currentTimeDisplay); | 859 visitor->trace(m_currentTimeDisplay); |
849 visitor->trace(m_timeline); | 860 visitor->trace(m_timeline); |
850 visitor->trace(m_muteButton); | 861 visitor->trace(m_muteButton); |
851 visitor->trace(m_volumeSlider); | 862 visitor->trace(m_volumeSlider); |
852 visitor->trace(m_toggleClosedCaptionsButton); | 863 visitor->trace(m_toggleClosedCaptionsButton); |
853 visitor->trace(m_fullscreenButton); | 864 visitor->trace(m_fullscreenButton); |
| 865 visitor->trace(m_downloadButton); |
854 visitor->trace(m_durationDisplay); | 866 visitor->trace(m_durationDisplay); |
855 visitor->trace(m_enclosure); | 867 visitor->trace(m_enclosure); |
856 visitor->trace(m_textTrackList); | 868 visitor->trace(m_textTrackList); |
857 visitor->trace(m_overflowMenu); | 869 visitor->trace(m_overflowMenu); |
858 visitor->trace(m_overflowList); | 870 visitor->trace(m_overflowList); |
859 visitor->trace(m_castButton); | 871 visitor->trace(m_castButton); |
860 visitor->trace(m_overlayCastButton); | 872 visitor->trace(m_overlayCastButton); |
861 HTMLDivElement::trace(visitor); | 873 HTMLDivElement::trace(visitor); |
862 } | 874 } |
863 | 875 |
864 } // namespace blink | 876 } // namespace blink |
OLD | NEW |