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