Chromium Code Reviews| 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 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 82 // The media controls DOM structure looks like: | 82 // The media controls DOM structure looks like: |
| 83 // | 83 // |
| 84 // MediaControls (-webkit-media-controls) | 84 // MediaControls (-webkit-media-controls) |
| 85 // +-MediaControlOverlayEnclosureElement (-webkit-media-controls-o verlay-enclosure) | 85 // +-MediaControlOverlayEnclosureElement (-webkit-media-controls-o verlay-enclosure) |
| 86 // | +-MediaControlOverlayPlayButtonElement (-webkit-media-controls-o verlay-play-button) | 86 // | +-MediaControlOverlayPlayButtonElement (-webkit-media-controls-o verlay-play-button) |
| 87 // | | {if mediaControlsOverlayPlayButtonEnabled} | 87 // | | {if mediaControlsOverlayPlayButtonEnabled} |
| 88 // | \-MediaControlCastButtonElement (-internal-media-controls -overlay-cast-button) | 88 // | \-MediaControlCastButtonElement (-internal-media-controls -overlay-cast-button) |
| 89 // \-MediaControlPanelEnclosureElement (-webkit-media-controls-e nclosure) | 89 // \-MediaControlPanelEnclosureElement (-webkit-media-controls-e nclosure) |
| 90 // \-MediaControlPanelElement (-webkit-media-controls-p anel) | 90 // \-MediaControlPanelElement (-webkit-media-controls-p anel) |
| 91 // +-MediaControlPlayButtonElement (-webkit-media-controls-p lay-button) | 91 // +-MediaControlPlayButtonElement (-webkit-media-controls-p lay-button) |
| 92 // +-MediaControlTimelineElement (-webkit-media-controls-t imeline) | |
| 93 // +-MediaControlCurrentTimeDisplayElement (-webkit-media-controls-c urrent-time-display) | 92 // +-MediaControlCurrentTimeDisplayElement (-webkit-media-controls-c urrent-time-display) |
| 94 // +-MediaControlTimeRemainingDisplayElement (-webkit-media-controls-t ime-remaining-display) | 93 // +-MediaControlTimeRemainingDisplayElement (-webkit-media-controls-t ime-remaining-display) |
| 94 // +-MediaControlTimelineElement (-webkit-media-controls-t imeline) | |
| 95 // +-MediaControlMuteButtonElement (-webkit-media-controls-m ute-button) | 95 // +-MediaControlMuteButtonElement (-webkit-media-controls-m ute-button) |
| 96 // +-MediaControlVolumeSliderElement (-webkit-media-controls-v olume-slider) | 96 // +-MediaControlVolumeSliderElement (-webkit-media-controls-v olume-slider) |
| 97 // +-MediaControlToggleClosedCaptionsButtonElement (-webkit-media-controls-t oggle-closed-captions-button) | 97 // +-MediaControlToggleClosedCaptionsButtonElement (-webkit-media-controls-t oggle-closed-captions-button) |
| 98 // +-MediaControlCastButtonElement (-internal-media-controls -cast-button) | 98 // +-MediaControlCastButtonElement (-internal-media-controls -cast-button) |
| 99 // \-MediaControlFullscreenButtonElement (-webkit-media-controls-f ullscreen-button) | 99 // \-MediaControlFullscreenButtonElement (-webkit-media-controls-f ullscreen-button) |
| 100 void MediaControls::initializeControls() | 100 void MediaControls::initializeControls() |
| 101 { | 101 { |
| 102 RefPtrWillBeRawPtr<MediaControlOverlayEnclosureElement> overlayEnclosure = M ediaControlOverlayEnclosureElement::create(*this); | 102 RefPtrWillBeRawPtr<MediaControlOverlayEnclosureElement> overlayEnclosure = M ediaControlOverlayEnclosureElement::create(*this); |
| 103 | 103 |
| 104 if (document().settings() && document().settings()->mediaControlsOverlayPlay ButtonEnabled()) { | 104 if (document().settings() && document().settings()->mediaControlsOverlayPlay ButtonEnabled()) { |
| (...skipping 13 matching lines...) Expand all Loading... | |
| 118 RefPtrWillBeRawPtr<MediaControlPanelEnclosureElement> enclosure = MediaContr olPanelEnclosureElement::create(*this); | 118 RefPtrWillBeRawPtr<MediaControlPanelEnclosureElement> enclosure = MediaContr olPanelEnclosureElement::create(*this); |
| 119 | 119 |
| 120 RefPtrWillBeRawPtr<MediaControlPanelElement> panel = MediaControlPanelElemen t::create(*this); | 120 RefPtrWillBeRawPtr<MediaControlPanelElement> panel = MediaControlPanelElemen t::create(*this); |
| 121 | 121 |
| 122 RefPtrWillBeRawPtr<MediaControlPlayButtonElement> playButton = MediaControlP layButtonElement::create(*this); | 122 RefPtrWillBeRawPtr<MediaControlPlayButtonElement> playButton = MediaControlP layButtonElement::create(*this); |
| 123 m_playButton = playButton.get(); | 123 m_playButton = playButton.get(); |
| 124 panel->appendChild(playButton.release()); | 124 panel->appendChild(playButton.release()); |
| 125 | 125 |
| 126 RefPtrWillBeRawPtr<MediaControlTimelineElement> timeline = MediaControlTimel ineElement::create(*this); | 126 RefPtrWillBeRawPtr<MediaControlTimelineElement> timeline = MediaControlTimel ineElement::create(*this); |
| 127 m_timeline = timeline.get(); | 127 m_timeline = timeline.get(); |
| 128 panel->appendChild(timeline.release()); | 128 // In old UX, timeline is before the time / duration text. |
| 129 if (!RuntimeEnabledFeatures::newMediaPlaybackUiEnabled()) | |
| 130 panel->appendChild(timeline.release()); | |
| 131 // else we will attach it later. | |
| 129 | 132 |
| 130 RefPtrWillBeRawPtr<MediaControlCurrentTimeDisplayElement> currentTimeDisplay = MediaControlCurrentTimeDisplayElement::create(*this); | 133 RefPtrWillBeRawPtr<MediaControlCurrentTimeDisplayElement> currentTimeDisplay = MediaControlCurrentTimeDisplayElement::create(*this); |
| 131 m_currentTimeDisplay = currentTimeDisplay.get(); | 134 m_currentTimeDisplay = currentTimeDisplay.get(); |
| 132 m_currentTimeDisplay->hide(); | 135 if (!RuntimeEnabledFeatures::newMediaPlaybackUiEnabled()) |
| 136 m_currentTimeDisplay->hide(); | |
| 137 | |
| 133 panel->appendChild(currentTimeDisplay.release()); | 138 panel->appendChild(currentTimeDisplay.release()); |
| 134 | 139 |
| 135 RefPtrWillBeRawPtr<MediaControlTimeRemainingDisplayElement> durationDisplay = MediaControlTimeRemainingDisplayElement::create(*this); | 140 RefPtrWillBeRawPtr<MediaControlTimeRemainingDisplayElement> durationDisplay = MediaControlTimeRemainingDisplayElement::create(*this); |
| 136 m_durationDisplay = durationDisplay.get(); | 141 m_durationDisplay = durationDisplay.get(); |
| 137 panel->appendChild(durationDisplay.release()); | 142 panel->appendChild(durationDisplay.release()); |
| 138 | 143 |
| 144 // In new UX, timeline is after the time / duration text. | |
| 145 if (RuntimeEnabledFeatures::newMediaPlaybackUiEnabled()) | |
| 146 panel->appendChild(timeline.release()); | |
| 147 | |
| 139 RefPtrWillBeRawPtr<MediaControlMuteButtonElement> muteButton = MediaControlM uteButtonElement::create(*this); | 148 RefPtrWillBeRawPtr<MediaControlMuteButtonElement> muteButton = MediaControlM uteButtonElement::create(*this); |
| 140 m_muteButton = muteButton.get(); | 149 m_muteButton = muteButton.get(); |
| 141 panel->appendChild(muteButton.release()); | 150 panel->appendChild(muteButton.release()); |
| 151 #if OS(ANDROID) | |
|
DaleCurtis
2015/06/11 00:54:29
Seems like this should be more a function of viewp
liberato (no reviews please)
2015/06/11 01:06:52
it's part of the spec -- hide this on android, sin
| |
| 152 if (RuntimeEnabledFeatures::newMediaPlaybackUiEnabled()) | |
| 153 m_muteButton->hide(); | |
| 154 #endif | |
| 142 | 155 |
| 143 RefPtrWillBeRawPtr<MediaControlVolumeSliderElement> slider = MediaControlVol umeSliderElement::create(*this); | 156 RefPtrWillBeRawPtr<MediaControlVolumeSliderElement> slider = MediaControlVol umeSliderElement::create(*this); |
| 144 m_volumeSlider = slider.get(); | 157 m_volumeSlider = slider.get(); |
| 145 panel->appendChild(slider.release()); | 158 panel->appendChild(slider.release()); |
| 159 #if OS(ANDROID) | |
| 160 if (RuntimeEnabledFeatures::newMediaPlaybackUiEnabled()) | |
| 161 m_volumeSlider->hide(); | |
| 162 #endif | |
| 146 | 163 |
| 147 RefPtrWillBeRawPtr<MediaControlToggleClosedCaptionsButtonElement> toggleClos edCaptionsButton = MediaControlToggleClosedCaptionsButtonElement::create(*this); | 164 RefPtrWillBeRawPtr<MediaControlToggleClosedCaptionsButtonElement> toggleClos edCaptionsButton = MediaControlToggleClosedCaptionsButtonElement::create(*this); |
| 148 m_toggleClosedCaptionsButton = toggleClosedCaptionsButton.get(); | 165 m_toggleClosedCaptionsButton = toggleClosedCaptionsButton.get(); |
| 149 panel->appendChild(toggleClosedCaptionsButton.release()); | 166 panel->appendChild(toggleClosedCaptionsButton.release()); |
| 150 | 167 |
| 151 RefPtrWillBeRawPtr<MediaControlCastButtonElement> castButton = MediaControlC astButtonElement::create(*this, false); | 168 RefPtrWillBeRawPtr<MediaControlCastButtonElement> castButton = MediaControlC astButtonElement::create(*this, false); |
| 152 m_castButton = castButton.get(); | 169 m_castButton = castButton.get(); |
| 153 panel->appendChild(castButton.release()); | 170 panel->appendChild(castButton.release()); |
| 154 | 171 |
| 155 RefPtrWillBeRawPtr<MediaControlFullscreenButtonElement> fullscreenButton = M ediaControlFullscreenButtonElement::create(*this); | 172 RefPtrWillBeRawPtr<MediaControlFullscreenButtonElement> fullscreenButton = M ediaControlFullscreenButtonElement::create(*this); |
| 156 m_fullScreenButton = fullscreenButton.get(); | 173 m_fullScreenButton = fullscreenButton.get(); |
| 157 panel->appendChild(fullscreenButton.release()); | 174 panel->appendChild(fullscreenButton.release()); |
| 158 | 175 |
| 159 m_panel = panel.get(); | 176 m_panel = panel.get(); |
| 160 enclosure->appendChild(panel.release()); | 177 enclosure->appendChild(panel.release()); |
| 161 | 178 |
| 162 m_enclosure = enclosure.get(); | 179 m_enclosure = enclosure.get(); |
| 163 appendChild(enclosure.release()); | 180 appendChild(enclosure.release()); |
| 164 } | 181 } |
| 165 | 182 |
| 166 void MediaControls::reset() | 183 void MediaControls::reset() |
| 167 { | 184 { |
| 168 double duration = mediaElement().duration(); | 185 double duration = mediaElement().duration(); |
| 169 m_durationDisplay->setInnerText(LayoutTheme::theme().formatMediaControlsTime (duration), ASSERT_NO_EXCEPTION); | 186 m_durationDisplay->setInnerText(LayoutTheme::theme().formatMediaControlsTime (duration), ASSERT_NO_EXCEPTION); |
| 170 m_durationDisplay->setCurrentValue(duration); | 187 m_durationDisplay->setCurrentValue(duration); |
| 171 | 188 |
| 189 if (RuntimeEnabledFeatures::newMediaPlaybackUiEnabled()) { | |
| 190 // Show everything that we might hide. | |
| 191 // If we don't have a duration, then hide it. | |
| 192 if (std::isfinite(duration)) | |
| 193 m_durationDisplay->show(); | |
| 194 else | |
| 195 m_durationDisplay->hide(); | |
| 196 m_currentTimeDisplay->show(); | |
| 197 m_timeline->show(); | |
| 198 } | |
| 199 | |
| 172 updatePlayState(); | 200 updatePlayState(); |
| 173 | 201 |
| 174 updateCurrentTimeDisplay(); | 202 updateCurrentTimeDisplay(); |
| 175 | 203 |
| 176 m_timeline->setDuration(duration); | 204 m_timeline->setDuration(duration); |
| 177 m_timeline->setPosition(mediaElement().currentTime()); | 205 m_timeline->setPosition(mediaElement().currentTime()); |
| 178 | 206 |
| 179 if (!mediaElement().hasAudio()) | 207 if (!mediaElement().hasAudio()) { |
| 180 m_volumeSlider->hide(); | 208 m_volumeSlider->hide(); |
| 181 else | 209 } else { |
| 210 #if OS(ANDROID) | |
| 211 // New UI always hides the volume slider on Android. | |
| 212 if (!RuntimeEnabledFeatures::newMediaPlaybackUiEnabled()) | |
| 213 m_volumeSlider->show(); | |
| 214 else | |
| 215 m_volumeSlider->hide(); | |
| 216 #else | |
| 182 m_volumeSlider->show(); | 217 m_volumeSlider->show(); |
| 218 #endif | |
| 219 } | |
| 183 updateVolume(); | 220 updateVolume(); |
| 184 | 221 |
| 185 refreshClosedCaptionsButtonVisibility(); | 222 refreshClosedCaptionsButtonVisibility(); |
| 186 | 223 |
| 187 if (mediaElement().hasVideo() && fullscreenIsSupported(document())) | 224 if (mediaElement().hasVideo() && fullscreenIsSupported(document())) |
| 188 m_fullScreenButton->show(); | 225 m_fullScreenButton->show(); |
| 189 else | 226 else |
| 190 m_fullScreenButton->hide(); | 227 m_fullScreenButton->hide(); |
| 191 | 228 |
| 192 refreshCastButtonVisibility(); | 229 refreshCastButtonVisibility(); |
| 230 hideControlsForSpace(); | |
| 193 makeOpaque(); | 231 makeOpaque(); |
| 194 } | 232 } |
| 195 | 233 |
| 196 LayoutObject* MediaControls::layoutObjectForTextTrackLayout() | 234 LayoutObject* MediaControls::layoutObjectForTextTrackLayout() |
| 197 { | 235 { |
| 198 return m_panel->layoutObject(); | 236 return m_panel->layoutObject(); |
| 199 } | 237 } |
| 200 | 238 |
| 201 void MediaControls::show() | 239 void MediaControls::show() |
| 202 { | 240 { |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 250 // controls/shadow tree. (Perform the checks separately to avoid going | 288 // controls/shadow tree. (Perform the checks separately to avoid going |
| 251 // through all the potential ancestor hosts for the focused element.) | 289 // through all the potential ancestor hosts for the focused element.) |
| 252 const bool ignoreFocus = behaviorFlags & IgnoreFocus; | 290 const bool ignoreFocus = behaviorFlags & IgnoreFocus; |
| 253 if (!ignoreFocus && (mediaElement().focused() || contains(document().focused Element()))) | 291 if (!ignoreFocus && (mediaElement().focused() || contains(document().focused Element()))) |
| 254 return false; | 292 return false; |
| 255 return true; | 293 return true; |
| 256 } | 294 } |
| 257 | 295 |
| 258 void MediaControls::playbackStarted() | 296 void MediaControls::playbackStarted() |
| 259 { | 297 { |
| 260 m_currentTimeDisplay->show(); | 298 if (!RuntimeEnabledFeatures::newMediaPlaybackUiEnabled()) { |
| 261 m_durationDisplay->hide(); | 299 m_currentTimeDisplay->show(); |
| 300 m_durationDisplay->hide(); | |
| 301 } | |
| 262 | 302 |
| 263 updatePlayState(); | 303 updatePlayState(); |
| 264 m_timeline->setPosition(mediaElement().currentTime()); | 304 m_timeline->setPosition(mediaElement().currentTime()); |
| 265 updateCurrentTimeDisplay(); | 305 updateCurrentTimeDisplay(); |
| 266 | 306 |
| 267 startHideMediaControlsTimer(); | 307 startHideMediaControlsTimer(); |
| 268 } | 308 } |
| 269 | 309 |
| 270 void MediaControls::playbackProgressed() | 310 void MediaControls::playbackProgressed() |
| 271 { | 311 { |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 312 mediaElement().togglePlayState(); | 352 mediaElement().togglePlayState(); |
| 313 } | 353 } |
| 314 } | 354 } |
| 315 | 355 |
| 316 void MediaControls::updateCurrentTimeDisplay() | 356 void MediaControls::updateCurrentTimeDisplay() |
| 317 { | 357 { |
| 318 double now = mediaElement().currentTime(); | 358 double now = mediaElement().currentTime(); |
| 319 double duration = mediaElement().duration(); | 359 double duration = mediaElement().duration(); |
| 320 | 360 |
| 321 // After seek, hide duration display and show current time. | 361 // After seek, hide duration display and show current time. |
| 322 if (now > 0) { | 362 if (!RuntimeEnabledFeatures::newMediaPlaybackUiEnabled() && now > 0) { |
| 323 m_currentTimeDisplay->show(); | 363 m_currentTimeDisplay->show(); |
| 324 m_durationDisplay->hide(); | 364 m_durationDisplay->hide(); |
| 325 } | 365 } |
| 326 | 366 |
| 327 // Allow the theme to format the time. | 367 // Allow the theme to format the time. |
| 328 m_currentTimeDisplay->setInnerText(LayoutTheme::theme().formatMediaControlsC urrentTime(now, duration), IGNORE_EXCEPTION); | 368 m_currentTimeDisplay->setInnerText(LayoutTheme::theme().formatMediaControlsC urrentTime(now, duration), IGNORE_EXCEPTION); |
| 329 m_currentTimeDisplay->setCurrentValue(now); | 369 m_currentTimeDisplay->setCurrentValue(now); |
| 330 } | 370 } |
| 331 | 371 |
| 332 void MediaControls::updateVolume() | 372 void MediaControls::updateVolume() |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 392 // Check that the cast button actually fits on the bar. | 432 // Check that the cast button actually fits on the bar. |
| 393 if (m_fullScreenButton->getBoundingClientRect()->right() > m_panel-> getBoundingClientRect()->right()) { | 433 if (m_fullScreenButton->getBoundingClientRect()->right() > m_panel-> getBoundingClientRect()->right()) { |
| 394 m_castButton->hide(); | 434 m_castButton->hide(); |
| 395 tryShowOverlayCastButton(); | 435 tryShowOverlayCastButton(); |
| 396 } | 436 } |
| 397 } | 437 } |
| 398 } else { | 438 } else { |
| 399 m_castButton->hide(); | 439 m_castButton->hide(); |
| 400 m_overlayCastButton->hide(); | 440 m_overlayCastButton->hide(); |
| 401 } | 441 } |
| 442 | |
| 443 hideControlsForSpace(); | |
| 402 } | 444 } |
| 403 | 445 |
| 404 void MediaControls::showOverlayCastButton() | 446 void MediaControls::showOverlayCastButton() |
| 405 { | 447 { |
| 406 tryShowOverlayCastButton(); | 448 tryShowOverlayCastButton(); |
| 407 resetHideMediaControlsTimer(); | 449 resetHideMediaControlsTimer(); |
| 408 } | 450 } |
| 409 | 451 |
| 410 void MediaControls::enteredFullscreen() | 452 void MediaControls::enteredFullscreen() |
| 411 { | 453 { |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 512 bool MediaControls::containsRelatedTarget(Event* event) | 554 bool MediaControls::containsRelatedTarget(Event* event) |
| 513 { | 555 { |
| 514 if (!event->isMouseEvent()) | 556 if (!event->isMouseEvent()) |
| 515 return false; | 557 return false; |
| 516 EventTarget* relatedTarget = toMouseEvent(event)->relatedTarget(); | 558 EventTarget* relatedTarget = toMouseEvent(event)->relatedTarget(); |
| 517 if (!relatedTarget) | 559 if (!relatedTarget) |
| 518 return false; | 560 return false; |
| 519 return contains(relatedTarget->toNode()); | 561 return contains(relatedTarget->toNode()); |
| 520 } | 562 } |
| 521 | 563 |
| 564 void MediaControls::hideControlsForSpace() | |
| 565 { | |
| 566 // Hide all controls that don't fit. | |
| 567 // The order, in order of decreasing droppiness: | |
| 568 // Volume, time, seek bar, cast. | |
| 569 | |
| 570 // In the old UI, don't do this. | |
| 571 if (!RuntimeEnabledFeatures::newMediaPlaybackUiEnabled()) | |
| 572 return; | |
| 573 | |
| 574 int panelWidth = m_panel->clientWidth(); | |
| 575 if (panelWidth == 0) | |
| 576 return; | |
| 577 | |
| 578 // we should just memorize the requirements of each. | |
| 579 // cases: Vol Time Slider Cast | |
| 580 // Time Slider Cast | |
| 581 // Vol Time Slider | |
| 582 // Time Slider | |
| 583 | |
| 584 // The cast button is the only variable. If it's shown, then subtract it | |
| 585 // from the available space. Note that because we don't re-show the other | |
| 586 // controls, this is stable. | |
| 587 if (m_castButton->isShown()) | |
| 588 panelWidth -= 48; | |
| 589 | |
| 590 // TODO(liberato): get confirmation from spec on these values. | |
| 591 if (panelWidth < 350) | |
| 592 m_volumeSlider->hide(); | |
| 593 | |
| 594 if (panelWidth < 300) { | |
| 595 m_currentTimeDisplay->hide(); | |
| 596 m_durationDisplay->hide(); | |
| 597 } | |
| 598 | |
| 599 if (panelWidth < 200) | |
| 600 m_timeline->hide(); | |
| 601 | |
| 602 if (panelWidth < 150) | |
| 603 m_castButton->hide(); | |
| 604 } | |
| 605 | |
| 522 DEFINE_TRACE(MediaControls) | 606 DEFINE_TRACE(MediaControls) |
| 523 { | 607 { |
| 524 visitor->trace(m_mediaElement); | 608 visitor->trace(m_mediaElement); |
| 525 visitor->trace(m_panel); | 609 visitor->trace(m_panel); |
| 526 visitor->trace(m_overlayPlayButton); | 610 visitor->trace(m_overlayPlayButton); |
| 527 visitor->trace(m_overlayEnclosure); | 611 visitor->trace(m_overlayEnclosure); |
| 528 visitor->trace(m_playButton); | 612 visitor->trace(m_playButton); |
| 529 visitor->trace(m_currentTimeDisplay); | 613 visitor->trace(m_currentTimeDisplay); |
| 530 visitor->trace(m_timeline); | 614 visitor->trace(m_timeline); |
| 531 visitor->trace(m_muteButton); | 615 visitor->trace(m_muteButton); |
| 532 visitor->trace(m_volumeSlider); | 616 visitor->trace(m_volumeSlider); |
| 533 visitor->trace(m_toggleClosedCaptionsButton); | 617 visitor->trace(m_toggleClosedCaptionsButton); |
| 534 visitor->trace(m_fullScreenButton); | 618 visitor->trace(m_fullScreenButton); |
| 535 visitor->trace(m_durationDisplay); | 619 visitor->trace(m_durationDisplay); |
| 536 visitor->trace(m_enclosure); | 620 visitor->trace(m_enclosure); |
| 537 visitor->trace(m_castButton); | 621 visitor->trace(m_castButton); |
| 538 visitor->trace(m_overlayCastButton); | 622 visitor->trace(m_overlayCastButton); |
| 539 HTMLDivElement::trace(visitor); | 623 HTMLDivElement::trace(visitor); |
| 540 } | 624 } |
| 541 | 625 |
| 542 } | 626 } |
| OLD | NEW |