| 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 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 83 } | 83 } |
| 84 ~BatchedControlUpdate() | 84 ~BatchedControlUpdate() |
| 85 { | 85 { |
| 86 ASSERT(isMainThread()); | 86 ASSERT(isMainThread()); |
| 87 ASSERT(s_batchDepth > 0); | 87 ASSERT(s_batchDepth > 0); |
| 88 if (!(--s_batchDepth)) | 88 if (!(--s_batchDepth)) |
| 89 m_controls->computeWhichControlsFit(); | 89 m_controls->computeWhichControlsFit(); |
| 90 } | 90 } |
| 91 | 91 |
| 92 private: | 92 private: |
| 93 RawPtrWillBeMember<MediaControls> m_controls; | 93 Member<MediaControls> m_controls; |
| 94 static int s_batchDepth; | 94 static int s_batchDepth; |
| 95 }; | 95 }; |
| 96 | 96 |
| 97 // Count of number open batches for controls visibility. | 97 // Count of number open batches for controls visibility. |
| 98 int MediaControls::BatchedControlUpdate::s_batchDepth = 0; | 98 int MediaControls::BatchedControlUpdate::s_batchDepth = 0; |
| 99 | 99 |
| 100 MediaControls::MediaControls(HTMLMediaElement& mediaElement) | 100 MediaControls::MediaControls(HTMLMediaElement& mediaElement) |
| 101 : HTMLDivElement(mediaElement.document()) | 101 : HTMLDivElement(mediaElement.document()) |
| 102 , m_mediaElement(&mediaElement) | 102 , m_mediaElement(&mediaElement) |
| 103 , m_overlayEnclosure(nullptr) | 103 , m_overlayEnclosure(nullptr) |
| (...skipping 13 matching lines...) Expand all Loading... |
| 117 , m_hideMediaControlsTimer(this, &MediaControls::hideMediaControlsTimerFired
) | 117 , m_hideMediaControlsTimer(this, &MediaControls::hideMediaControlsTimerFired
) |
| 118 , m_hideTimerBehaviorFlags(IgnoreNone) | 118 , m_hideTimerBehaviorFlags(IgnoreNone) |
| 119 , m_isMouseOverControls(false) | 119 , m_isMouseOverControls(false) |
| 120 , m_isPausedForScrubbing(false) | 120 , m_isPausedForScrubbing(false) |
| 121 , m_panelWidthChangedTimer(this, &MediaControls::panelWidthChangedTimerFired
) | 121 , m_panelWidthChangedTimer(this, &MediaControls::panelWidthChangedTimerFired
) |
| 122 , m_panelWidth(0) | 122 , m_panelWidth(0) |
| 123 , m_allowHiddenVolumeControls(RuntimeEnabledFeatures::newMediaPlaybackUiEnab
led()) | 123 , m_allowHiddenVolumeControls(RuntimeEnabledFeatures::newMediaPlaybackUiEnab
led()) |
| 124 { | 124 { |
| 125 } | 125 } |
| 126 | 126 |
| 127 PassRefPtrWillBeRawPtr<MediaControls> MediaControls::create(HTMLMediaElement& me
diaElement) | 127 RawPtr<MediaControls> MediaControls::create(HTMLMediaElement& mediaElement) |
| 128 { | 128 { |
| 129 RefPtrWillBeRawPtr<MediaControls> controls = adoptRefWillBeNoop(new MediaCon
trols(mediaElement)); | 129 RawPtr<MediaControls> controls = (new MediaControls(mediaElement)); |
| 130 controls->setShadowPseudoId(AtomicString("-webkit-media-controls", AtomicStr
ing::ConstructFromLiteral)); | 130 controls->setShadowPseudoId(AtomicString("-webkit-media-controls", AtomicStr
ing::ConstructFromLiteral)); |
| 131 controls->initializeControls(); | 131 controls->initializeControls(); |
| 132 return controls.release(); | 132 return controls.release(); |
| 133 } | 133 } |
| 134 | 134 |
| 135 // The media controls DOM structure looks like: | 135 // The media controls DOM structure looks like: |
| 136 // | 136 // |
| 137 // MediaControls (-webkit-media-controls) | 137 // MediaControls (-webkit-media-controls) |
| 138 // +-MediaControlOverlayEnclosureElement (-webkit-media-controls-o
verlay-enclosure) | 138 // +-MediaControlOverlayEnclosureElement (-webkit-media-controls-o
verlay-enclosure) |
| 139 // | +-MediaControlOverlayPlayButtonElement (-webkit-media-controls-o
verlay-play-button) | 139 // | +-MediaControlOverlayPlayButtonElement (-webkit-media-controls-o
verlay-play-button) |
| 140 // | | {if mediaControlsOverlayPlayButtonEnabled} | 140 // | | {if mediaControlsOverlayPlayButtonEnabled} |
| 141 // | \-MediaControlCastButtonElement (-internal-media-controls
-overlay-cast-button) | 141 // | \-MediaControlCastButtonElement (-internal-media-controls
-overlay-cast-button) |
| 142 // \-MediaControlPanelEnclosureElement (-webkit-media-controls-e
nclosure) | 142 // \-MediaControlPanelEnclosureElement (-webkit-media-controls-e
nclosure) |
| 143 // \-MediaControlPanelElement (-webkit-media-controls-p
anel) | 143 // \-MediaControlPanelElement (-webkit-media-controls-p
anel) |
| 144 // +-MediaControlPlayButtonElement (-webkit-media-controls-p
lay-button) | 144 // +-MediaControlPlayButtonElement (-webkit-media-controls-p
lay-button) |
| 145 // | {if !RTE::newMediaPlaybackUi()} | 145 // | {if !RTE::newMediaPlaybackUi()} |
| 146 // +-MediaControlTimelineElement (-webkit-media-controls-t
imeline) | 146 // +-MediaControlTimelineElement (-webkit-media-controls-t
imeline) |
| 147 // +-MediaControlCurrentTimeDisplayElement (-webkit-media-controls-c
urrent-time-display) | 147 // +-MediaControlCurrentTimeDisplayElement (-webkit-media-controls-c
urrent-time-display) |
| 148 // +-MediaControlTimeRemainingDisplayElement (-webkit-media-controls-t
ime-remaining-display) | 148 // +-MediaControlTimeRemainingDisplayElement (-webkit-media-controls-t
ime-remaining-display) |
| 149 // | {if RTE::newMediaPlaybackUi()} | 149 // | {if RTE::newMediaPlaybackUi()} |
| 150 // +-MediaControlTimelineElement (-webkit-media-controls-t
imeline) | 150 // +-MediaControlTimelineElement (-webkit-media-controls-t
imeline) |
| 151 // +-MediaControlMuteButtonElement (-webkit-media-controls-m
ute-button) | 151 // +-MediaControlMuteButtonElement (-webkit-media-controls-m
ute-button) |
| 152 // +-MediaControlVolumeSliderElement (-webkit-media-controls-v
olume-slider) | 152 // +-MediaControlVolumeSliderElement (-webkit-media-controls-v
olume-slider) |
| 153 // +-MediaControlToggleClosedCaptionsButtonElement (-webkit-media-controls-t
oggle-closed-captions-button) | 153 // +-MediaControlToggleClosedCaptionsButtonElement (-webkit-media-controls-t
oggle-closed-captions-button) |
| 154 // +-MediaControlCastButtonElement (-internal-media-controls
-cast-button) | 154 // +-MediaControlCastButtonElement (-internal-media-controls
-cast-button) |
| 155 // \-MediaControlFullscreenButtonElement (-webkit-media-controls-f
ullscreen-button) | 155 // \-MediaControlFullscreenButtonElement (-webkit-media-controls-f
ullscreen-button) |
| 156 void MediaControls::initializeControls() | 156 void MediaControls::initializeControls() |
| 157 { | 157 { |
| 158 const bool useNewUi = RuntimeEnabledFeatures::newMediaPlaybackUiEnabled(); | 158 const bool useNewUi = RuntimeEnabledFeatures::newMediaPlaybackUiEnabled(); |
| 159 RefPtrWillBeRawPtr<MediaControlOverlayEnclosureElement> overlayEnclosure = M
ediaControlOverlayEnclosureElement::create(*this); | 159 RawPtr<MediaControlOverlayEnclosureElement> overlayEnclosure = MediaControlO
verlayEnclosureElement::create(*this); |
| 160 | 160 |
| 161 if (document().settings() && document().settings()->mediaControlsOverlayPlay
ButtonEnabled()) { | 161 if (document().settings() && document().settings()->mediaControlsOverlayPlay
ButtonEnabled()) { |
| 162 RefPtrWillBeRawPtr<MediaControlOverlayPlayButtonElement> overlayPlayButt
on = MediaControlOverlayPlayButtonElement::create(*this); | 162 RawPtr<MediaControlOverlayPlayButtonElement> overlayPlayButton = MediaCo
ntrolOverlayPlayButtonElement::create(*this); |
| 163 m_overlayPlayButton = overlayPlayButton.get(); | 163 m_overlayPlayButton = overlayPlayButton.get(); |
| 164 overlayEnclosure->appendChild(overlayPlayButton.release()); | 164 overlayEnclosure->appendChild(overlayPlayButton.release()); |
| 165 } | 165 } |
| 166 | 166 |
| 167 RefPtrWillBeRawPtr<MediaControlCastButtonElement> overlayCastButton = MediaC
ontrolCastButtonElement::create(*this, true); | 167 RawPtr<MediaControlCastButtonElement> overlayCastButton = MediaControlCastBu
ttonElement::create(*this, true); |
| 168 m_overlayCastButton = overlayCastButton.get(); | 168 m_overlayCastButton = overlayCastButton.get(); |
| 169 overlayEnclosure->appendChild(overlayCastButton.release()); | 169 overlayEnclosure->appendChild(overlayCastButton.release()); |
| 170 | 170 |
| 171 m_overlayEnclosure = overlayEnclosure.get(); | 171 m_overlayEnclosure = overlayEnclosure.get(); |
| 172 appendChild(overlayEnclosure.release()); | 172 appendChild(overlayEnclosure.release()); |
| 173 | 173 |
| 174 // Create an enclosing element for the panel so we can visually offset the c
ontrols correctly. | 174 // Create an enclosing element for the panel so we can visually offset the c
ontrols correctly. |
| 175 RefPtrWillBeRawPtr<MediaControlPanelEnclosureElement> enclosure = MediaContr
olPanelEnclosureElement::create(*this); | 175 RawPtr<MediaControlPanelEnclosureElement> enclosure = MediaControlPanelEnclo
sureElement::create(*this); |
| 176 | 176 |
| 177 RefPtrWillBeRawPtr<MediaControlPanelElement> panel = MediaControlPanelElemen
t::create(*this); | 177 RawPtr<MediaControlPanelElement> panel = MediaControlPanelElement::create(*t
his); |
| 178 | 178 |
| 179 RefPtrWillBeRawPtr<MediaControlPlayButtonElement> playButton = MediaControlP
layButtonElement::create(*this); | 179 RawPtr<MediaControlPlayButtonElement> playButton = MediaControlPlayButtonEle
ment::create(*this); |
| 180 m_playButton = playButton.get(); | 180 m_playButton = playButton.get(); |
| 181 panel->appendChild(playButton.release()); | 181 panel->appendChild(playButton.release()); |
| 182 | 182 |
| 183 RefPtrWillBeRawPtr<MediaControlTimelineElement> timeline = MediaControlTimel
ineElement::create(*this); | 183 RawPtr<MediaControlTimelineElement> timeline = MediaControlTimelineElement::
create(*this); |
| 184 m_timeline = timeline.get(); | 184 m_timeline = timeline.get(); |
| 185 // In old UX, timeline is before the time / duration text. | 185 // In old UX, timeline is before the time / duration text. |
| 186 if (!useNewUi) | 186 if (!useNewUi) |
| 187 panel->appendChild(timeline.release()); | 187 panel->appendChild(timeline.release()); |
| 188 // else we will attach it later. | 188 // else we will attach it later. |
| 189 | 189 |
| 190 RefPtrWillBeRawPtr<MediaControlCurrentTimeDisplayElement> currentTimeDisplay
= MediaControlCurrentTimeDisplayElement::create(*this); | 190 RawPtr<MediaControlCurrentTimeDisplayElement> currentTimeDisplay = MediaCont
rolCurrentTimeDisplayElement::create(*this); |
| 191 m_currentTimeDisplay = currentTimeDisplay.get(); | 191 m_currentTimeDisplay = currentTimeDisplay.get(); |
| 192 m_currentTimeDisplay->setIsWanted(useNewUi); | 192 m_currentTimeDisplay->setIsWanted(useNewUi); |
| 193 panel->appendChild(currentTimeDisplay.release()); | 193 panel->appendChild(currentTimeDisplay.release()); |
| 194 | 194 |
| 195 RefPtrWillBeRawPtr<MediaControlTimeRemainingDisplayElement> durationDisplay
= MediaControlTimeRemainingDisplayElement::create(*this); | 195 RawPtr<MediaControlTimeRemainingDisplayElement> durationDisplay = MediaContr
olTimeRemainingDisplayElement::create(*this); |
| 196 m_durationDisplay = durationDisplay.get(); | 196 m_durationDisplay = durationDisplay.get(); |
| 197 panel->appendChild(durationDisplay.release()); | 197 panel->appendChild(durationDisplay.release()); |
| 198 | 198 |
| 199 // Timeline is after the time / duration text if newMediaPlaybackUiEnabled. | 199 // Timeline is after the time / duration text if newMediaPlaybackUiEnabled. |
| 200 if (useNewUi) | 200 if (useNewUi) |
| 201 panel->appendChild(timeline.release()); | 201 panel->appendChild(timeline.release()); |
| 202 | 202 |
| 203 RefPtrWillBeRawPtr<MediaControlMuteButtonElement> muteButton = MediaControlM
uteButtonElement::create(*this); | 203 RawPtr<MediaControlMuteButtonElement> muteButton = MediaControlMuteButtonEle
ment::create(*this); |
| 204 m_muteButton = muteButton.get(); | 204 m_muteButton = muteButton.get(); |
| 205 panel->appendChild(muteButton.release()); | 205 panel->appendChild(muteButton.release()); |
| 206 | 206 |
| 207 RefPtrWillBeRawPtr<MediaControlVolumeSliderElement> slider = MediaControlVol
umeSliderElement::create(*this); | 207 RawPtr<MediaControlVolumeSliderElement> slider = MediaControlVolumeSliderEle
ment::create(*this); |
| 208 m_volumeSlider = slider.get(); | 208 m_volumeSlider = slider.get(); |
| 209 panel->appendChild(slider.release()); | 209 panel->appendChild(slider.release()); |
| 210 if (m_allowHiddenVolumeControls && preferHiddenVolumeControls(document())) | 210 if (m_allowHiddenVolumeControls && preferHiddenVolumeControls(document())) |
| 211 m_volumeSlider->setIsWanted(false); | 211 m_volumeSlider->setIsWanted(false); |
| 212 | 212 |
| 213 RefPtrWillBeRawPtr<MediaControlToggleClosedCaptionsButtonElement> toggleClos
edCaptionsButton = MediaControlToggleClosedCaptionsButtonElement::create(*this); | 213 RawPtr<MediaControlToggleClosedCaptionsButtonElement> toggleClosedCaptionsBu
tton = MediaControlToggleClosedCaptionsButtonElement::create(*this); |
| 214 m_toggleClosedCaptionsButton = toggleClosedCaptionsButton.get(); | 214 m_toggleClosedCaptionsButton = toggleClosedCaptionsButton.get(); |
| 215 panel->appendChild(toggleClosedCaptionsButton.release()); | 215 panel->appendChild(toggleClosedCaptionsButton.release()); |
| 216 | 216 |
| 217 RefPtrWillBeRawPtr<MediaControlCastButtonElement> castButton = MediaControlC
astButtonElement::create(*this, false); | 217 RawPtr<MediaControlCastButtonElement> castButton = MediaControlCastButtonEle
ment::create(*this, false); |
| 218 m_castButton = castButton.get(); | 218 m_castButton = castButton.get(); |
| 219 panel->appendChild(castButton.release()); | 219 panel->appendChild(castButton.release()); |
| 220 | 220 |
| 221 RefPtrWillBeRawPtr<MediaControlFullscreenButtonElement> fullscreenButton = M
ediaControlFullscreenButtonElement::create(*this); | 221 RawPtr<MediaControlFullscreenButtonElement> fullscreenButton = MediaControlF
ullscreenButtonElement::create(*this); |
| 222 m_fullScreenButton = fullscreenButton.get(); | 222 m_fullScreenButton = fullscreenButton.get(); |
| 223 panel->appendChild(fullscreenButton.release()); | 223 panel->appendChild(fullscreenButton.release()); |
| 224 | 224 |
| 225 m_panel = panel.get(); | 225 m_panel = panel.get(); |
| 226 enclosure->appendChild(panel.release()); | 226 enclosure->appendChild(panel.release()); |
| 227 | 227 |
| 228 m_enclosure = enclosure.get(); | 228 m_enclosure = enclosure.get(); |
| 229 appendChild(enclosure.release()); | 229 appendChild(enclosure.release()); |
| 230 } | 230 } |
| 231 | 231 |
| (...skipping 517 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 749 visitor->trace(m_toggleClosedCaptionsButton); | 749 visitor->trace(m_toggleClosedCaptionsButton); |
| 750 visitor->trace(m_fullScreenButton); | 750 visitor->trace(m_fullScreenButton); |
| 751 visitor->trace(m_durationDisplay); | 751 visitor->trace(m_durationDisplay); |
| 752 visitor->trace(m_enclosure); | 752 visitor->trace(m_enclosure); |
| 753 visitor->trace(m_castButton); | 753 visitor->trace(m_castButton); |
| 754 visitor->trace(m_overlayCastButton); | 754 visitor->trace(m_overlayCastButton); |
| 755 HTMLDivElement::trace(visitor); | 755 HTMLDivElement::trace(visitor); |
| 756 } | 756 } |
| 757 | 757 |
| 758 } // namespace blink | 758 } // namespace blink |
| OLD | NEW |