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

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

Issue 828413005: Stop pretending MediaControls::initializeControls() will fail (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rebase. Created 5 years, 11 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 | Annotate | Revision Log
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 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
67 , m_hideMediaControlsTimer(this, &MediaControls::hideMediaControlsTimerFired ) 67 , m_hideMediaControlsTimer(this, &MediaControls::hideMediaControlsTimerFired )
68 , m_isMouseOverControls(false) 68 , m_isMouseOverControls(false)
69 , m_isPausedForScrubbing(false) 69 , m_isPausedForScrubbing(false)
70 , m_wasLastEventTouch(false) 70 , m_wasLastEventTouch(false)
71 { 71 {
72 } 72 }
73 73
74 PassRefPtrWillBeRawPtr<MediaControls> MediaControls::create(HTMLMediaElement& me diaElement) 74 PassRefPtrWillBeRawPtr<MediaControls> MediaControls::create(HTMLMediaElement& me diaElement)
75 { 75 {
76 RefPtrWillBeRawPtr<MediaControls> controls = adoptRefWillBeNoop(new MediaCon trols(mediaElement)); 76 RefPtrWillBeRawPtr<MediaControls> controls = adoptRefWillBeNoop(new MediaCon trols(mediaElement));
77 77 controls->setShadowPseudoId(AtomicString("-webkit-media-controls", AtomicStr ing::ConstructFromLiteral));
philipj_slow 2015/01/14 19:19:08 Makes sense given structure of MediaControl*Elemen
78 if (controls->initializeControls()) 78 controls->initializeControls();
79 return controls.release(); 79 return controls.release();
80
81 return nullptr;
82 } 80 }
83 81
84 // The media controls DOM structure looks like: 82 // The media controls DOM structure looks like:
85 // 83 //
86 // MediaControls (-webkit-media-controls) 84 // MediaControls (-webkit-media-controls)
87 // +-MediaControlOverlayEnclosureElement (-webkit-media-controls-o verlay-enclosure) 85 // +-MediaControlOverlayEnclosureElement (-webkit-media-controls-o verlay-enclosure)
88 // | +-MediaControlTextTrackContainerElement (-webkit-media-text-track -container) 86 // | +-MediaControlTextTrackContainerElement (-webkit-media-text-track -container)
89 // | | {when text tracks are enabled} 87 // | | {when text tracks are enabled}
90 // | +-MediaControlOverlayPlayButtonElement (-webkit-media-controls-o verlay-play-button) 88 // | +-MediaControlOverlayPlayButtonElement (-webkit-media-controls-o verlay-play-button)
91 // | | {if mediaControlsOverlayPlayButtonEnabled} 89 // | | {if mediaControlsOverlayPlayButtonEnabled}
92 // | \-MediaControlCastButtonElement (-internal-media-controls -overlay-cast-button) 90 // | \-MediaControlCastButtonElement (-internal-media-controls -overlay-cast-button)
93 // \-MediaControlPanelEnclosureElement (-webkit-media-controls-e nclosure) 91 // \-MediaControlPanelEnclosureElement (-webkit-media-controls-e nclosure)
94 // \-MediaControlPanelElement (-webkit-media-controls-p anel) 92 // \-MediaControlPanelElement (-webkit-media-controls-p anel)
95 // +-MediaControlPlayButtonElement (-webkit-media-controls-p lay-button) 93 // +-MediaControlPlayButtonElement (-webkit-media-controls-p lay-button)
96 // +-MediaControlTimelineElement (-webkit-media-controls-t imeline) 94 // +-MediaControlTimelineElement (-webkit-media-controls-t imeline)
97 // +-MediaControlCurrentTimeDisplayElement (-webkit-media-controls-c urrent-time-display) 95 // +-MediaControlCurrentTimeDisplayElement (-webkit-media-controls-c urrent-time-display)
98 // +-MediaControlTimeRemainingDisplayElement (-webkit-media-controls-t ime-remaining-display) 96 // +-MediaControlTimeRemainingDisplayElement (-webkit-media-controls-t ime-remaining-display)
99 // +-MediaControlMuteButtonElement (-webkit-media-controls-m ute-button) 97 // +-MediaControlMuteButtonElement (-webkit-media-controls-m ute-button)
100 // +-MediaControlVolumeSliderElement (-webkit-media-controls-v olume-slider) 98 // +-MediaControlVolumeSliderElement (-webkit-media-controls-v olume-slider)
101 // +-MediaControlToggleClosedCaptionsButtonElement (-webkit-media-controls-t oggle-closed-captions-button) 99 // +-MediaControlToggleClosedCaptionsButtonElement (-webkit-media-controls-t oggle-closed-captions-button)
102 // +-MediaControlCastButtonElement (-internal-media-controls -cast-button) 100 // +-MediaControlCastButtonElement (-internal-media-controls -cast-button)
103 // \-MediaControlFullscreenButtonElement (-webkit-media-controls-f ullscreen-button) 101 // \-MediaControlFullscreenButtonElement (-webkit-media-controls-f ullscreen-button)
104 // 102 //
105 // Most of the structure is built by MediaControls::initializeControls() - the 103 // Most of the structure is built by MediaControls::initializeControls() - the
106 // exception being MediaControlTextTrackContainerElement which is added 104 // exception being MediaControlTextTrackContainerElement which is added
107 // on-demand by MediaControls::createTextTrackDisplay(). 105 // on-demand by MediaControls::createTextTrackDisplay().
108 bool MediaControls::initializeControls() 106 void MediaControls::initializeControls()
109 { 107 {
110 TrackExceptionState exceptionState;
111
112 setShadowPseudoId(AtomicString("-webkit-media-controls", AtomicString::Const ructFromLiteral));
113
114 RefPtrWillBeRawPtr<MediaControlOverlayEnclosureElement> overlayEnclosure = M ediaControlOverlayEnclosureElement::create(*this); 108 RefPtrWillBeRawPtr<MediaControlOverlayEnclosureElement> overlayEnclosure = M ediaControlOverlayEnclosureElement::create(*this);
115 109
116 if (document().settings() && document().settings()->mediaControlsOverlayPlay ButtonEnabled()) { 110 if (document().settings() && document().settings()->mediaControlsOverlayPlay ButtonEnabled()) {
117 RefPtrWillBeRawPtr<MediaControlOverlayPlayButtonElement> overlayPlayButt on = MediaControlOverlayPlayButtonElement::create(*this); 111 RefPtrWillBeRawPtr<MediaControlOverlayPlayButtonElement> overlayPlayButt on = MediaControlOverlayPlayButtonElement::create(*this);
118 m_overlayPlayButton = overlayPlayButton.get(); 112 m_overlayPlayButton = overlayPlayButton.get();
119 overlayEnclosure->appendChild(overlayPlayButton.release(), exceptionStat e); 113 overlayEnclosure->appendChild(overlayPlayButton.release());
120 if (exceptionState.hadException())
121 return false;
122 } 114 }
123 115
124 RefPtrWillBeRawPtr<MediaControlCastButtonElement> overlayCastButton = MediaC ontrolCastButtonElement::create(*this, true); 116 RefPtrWillBeRawPtr<MediaControlCastButtonElement> overlayCastButton = MediaC ontrolCastButtonElement::create(*this, true);
125 m_overlayCastButton = overlayCastButton.get(); 117 m_overlayCastButton = overlayCastButton.get();
126 overlayEnclosure->appendChild(overlayCastButton.release(), exceptionState); 118 overlayEnclosure->appendChild(overlayCastButton.release());
127 if (exceptionState.hadException())
128 return false;
129 119
130 m_overlayEnclosure = overlayEnclosure.get(); 120 m_overlayEnclosure = overlayEnclosure.get();
131 appendChild(overlayEnclosure.release(), exceptionState); 121 appendChild(overlayEnclosure.release());
132 if (exceptionState.hadException())
133 return false;
134 122
135 // Create an enclosing element for the panel so we can visually offset the c ontrols correctly. 123 // Create an enclosing element for the panel so we can visually offset the c ontrols correctly.
136 RefPtrWillBeRawPtr<MediaControlPanelEnclosureElement> enclosure = MediaContr olPanelEnclosureElement::create(*this); 124 RefPtrWillBeRawPtr<MediaControlPanelEnclosureElement> enclosure = MediaContr olPanelEnclosureElement::create(*this);
137 125
138 RefPtrWillBeRawPtr<MediaControlPanelElement> panel = MediaControlPanelElemen t::create(*this); 126 RefPtrWillBeRawPtr<MediaControlPanelElement> panel = MediaControlPanelElemen t::create(*this);
139 127
140 RefPtrWillBeRawPtr<MediaControlPlayButtonElement> playButton = MediaControlP layButtonElement::create(*this); 128 RefPtrWillBeRawPtr<MediaControlPlayButtonElement> playButton = MediaControlP layButtonElement::create(*this);
141 m_playButton = playButton.get(); 129 m_playButton = playButton.get();
142 panel->appendChild(playButton.release(), exceptionState); 130 panel->appendChild(playButton.release());
143 if (exceptionState.hadException())
144 return false;
145 131
146 RefPtrWillBeRawPtr<MediaControlTimelineElement> timeline = MediaControlTimel ineElement::create(*this); 132 RefPtrWillBeRawPtr<MediaControlTimelineElement> timeline = MediaControlTimel ineElement::create(*this);
147 m_timeline = timeline.get(); 133 m_timeline = timeline.get();
148 panel->appendChild(timeline.release(), exceptionState); 134 panel->appendChild(timeline.release());
149 if (exceptionState.hadException())
150 return false;
151 135
152 RefPtrWillBeRawPtr<MediaControlCurrentTimeDisplayElement> currentTimeDisplay = MediaControlCurrentTimeDisplayElement::create(*this); 136 RefPtrWillBeRawPtr<MediaControlCurrentTimeDisplayElement> currentTimeDisplay = MediaControlCurrentTimeDisplayElement::create(*this);
153 m_currentTimeDisplay = currentTimeDisplay.get(); 137 m_currentTimeDisplay = currentTimeDisplay.get();
154 m_currentTimeDisplay->hide(); 138 m_currentTimeDisplay->hide();
155 panel->appendChild(currentTimeDisplay.release(), exceptionState); 139 panel->appendChild(currentTimeDisplay.release());
156 if (exceptionState.hadException())
157 return false;
158 140
159 RefPtrWillBeRawPtr<MediaControlTimeRemainingDisplayElement> durationDisplay = MediaControlTimeRemainingDisplayElement::create(*this); 141 RefPtrWillBeRawPtr<MediaControlTimeRemainingDisplayElement> durationDisplay = MediaControlTimeRemainingDisplayElement::create(*this);
160 m_durationDisplay = durationDisplay.get(); 142 m_durationDisplay = durationDisplay.get();
161 panel->appendChild(durationDisplay.release(), exceptionState); 143 panel->appendChild(durationDisplay.release());
162 if (exceptionState.hadException())
163 return false;
164 144
165 RefPtrWillBeRawPtr<MediaControlMuteButtonElement> muteButton = MediaControlM uteButtonElement::create(*this); 145 RefPtrWillBeRawPtr<MediaControlMuteButtonElement> muteButton = MediaControlM uteButtonElement::create(*this);
166 m_muteButton = muteButton.get(); 146 m_muteButton = muteButton.get();
167 panel->appendChild(muteButton.release(), exceptionState); 147 panel->appendChild(muteButton.release());
168 if (exceptionState.hadException())
169 return false;
170 148
171 RefPtrWillBeRawPtr<MediaControlVolumeSliderElement> slider = MediaControlVol umeSliderElement::create(*this); 149 RefPtrWillBeRawPtr<MediaControlVolumeSliderElement> slider = MediaControlVol umeSliderElement::create(*this);
172 m_volumeSlider = slider.get(); 150 m_volumeSlider = slider.get();
173 panel->appendChild(slider.release(), exceptionState); 151 panel->appendChild(slider.release());
174 if (exceptionState.hadException())
175 return false;
176 152
177 RefPtrWillBeRawPtr<MediaControlToggleClosedCaptionsButtonElement> toggleClos edCaptionsButton = MediaControlToggleClosedCaptionsButtonElement::create(*this); 153 RefPtrWillBeRawPtr<MediaControlToggleClosedCaptionsButtonElement> toggleClos edCaptionsButton = MediaControlToggleClosedCaptionsButtonElement::create(*this);
178 m_toggleClosedCaptionsButton = toggleClosedCaptionsButton.get(); 154 m_toggleClosedCaptionsButton = toggleClosedCaptionsButton.get();
179 panel->appendChild(toggleClosedCaptionsButton.release(), exceptionState); 155 panel->appendChild(toggleClosedCaptionsButton.release());
180 if (exceptionState.hadException())
181 return false;
182 156
183 RefPtrWillBeRawPtr<MediaControlCastButtonElement> castButton = MediaControlC astButtonElement::create(*this, false); 157 RefPtrWillBeRawPtr<MediaControlCastButtonElement> castButton = MediaControlC astButtonElement::create(*this, false);
184 m_castButton = castButton.get(); 158 m_castButton = castButton.get();
185 panel->appendChild(castButton.release(), exceptionState); 159 panel->appendChild(castButton.release());
186 if (exceptionState.hadException())
187 return false;
188 160
189 RefPtrWillBeRawPtr<MediaControlFullscreenButtonElement> fullscreenButton = M ediaControlFullscreenButtonElement::create(*this); 161 RefPtrWillBeRawPtr<MediaControlFullscreenButtonElement> fullscreenButton = M ediaControlFullscreenButtonElement::create(*this);
190 m_fullScreenButton = fullscreenButton.get(); 162 m_fullScreenButton = fullscreenButton.get();
191 panel->appendChild(fullscreenButton.release(), exceptionState); 163 panel->appendChild(fullscreenButton.release());
192 if (exceptionState.hadException())
193 return false;
194 164
195 m_panel = panel.get(); 165 m_panel = panel.get();
196 enclosure->appendChild(panel.release(), exceptionState); 166 enclosure->appendChild(panel.release());
197 if (exceptionState.hadException())
198 return false;
199 167
200 m_enclosure = enclosure.get(); 168 m_enclosure = enclosure.get();
201 appendChild(enclosure.release(), exceptionState); 169 appendChild(enclosure.release());
202 if (exceptionState.hadException())
203 return false;
204
205 return true;
206 } 170 }
207 171
208 void MediaControls::reset() 172 void MediaControls::reset()
209 { 173 {
210 double duration = mediaElement().duration(); 174 double duration = mediaElement().duration();
211 m_durationDisplay->setInnerText(RenderTheme::theme().formatMediaControlsTime (duration), ASSERT_NO_EXCEPTION); 175 m_durationDisplay->setInnerText(RenderTheme::theme().formatMediaControlsTime (duration), ASSERT_NO_EXCEPTION);
212 m_durationDisplay->setCurrentValue(duration); 176 m_durationDisplay->setCurrentValue(duration);
213 177
214 updatePlayState(); 178 updatePlayState();
215 179
(...skipping 385 matching lines...) Expand 10 before | Expand all | Expand 10 after
601 visitor->trace(m_toggleClosedCaptionsButton); 565 visitor->trace(m_toggleClosedCaptionsButton);
602 visitor->trace(m_fullScreenButton); 566 visitor->trace(m_fullScreenButton);
603 visitor->trace(m_durationDisplay); 567 visitor->trace(m_durationDisplay);
604 visitor->trace(m_enclosure); 568 visitor->trace(m_enclosure);
605 visitor->trace(m_castButton); 569 visitor->trace(m_castButton);
606 visitor->trace(m_overlayCastButton); 570 visitor->trace(m_overlayCastButton);
607 HTMLDivElement::trace(visitor); 571 HTMLDivElement::trace(visitor);
608 } 572 }
609 573
610 } 574 }
OLDNEW
« Source/core/html/HTMLMediaElement.cpp ('K') | « Source/core/html/shadow/MediaControls.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698