Source/WebCore/ChangeLog

 12011-12-01 Hajime Morrita <morrita@chromium.org>
 2
 3 https://bugs.webkit.org/show_bug.cgi?id=53001
 4 m_mediaElement of MediaControlElement family should be removed.
 5
 6 Reviewed by NOBODY (OOPS!).
 7
 8 Removed MediaControls::m_mediaElement and MediaControlRootElement::m_mediaElement then
 9 replaced the mediaElement() accessor using shadowTreeRootNode(), which should return HTMLMediaElement instance.
 10 By this change, Media control classes no longer need any HTMLMediaElement pointer for their instantiation.
 11
 12 No new tests. No behavioral change.
 13
 14 * html/shadow/MediaControlElements.cpp:
 15 (WebCore::MediaControlElement::MediaControlElement):
 16 (WebCore::MediaControlElement::mediaElement):
 17 (WebCore::MediaControlPanelElement::MediaControlPanelElement):
 18 (WebCore::MediaControlPanelElement::create):
 19 (WebCore::MediaControlTimelineContainerElement::MediaControlTimelineContainerElement):
 20 (WebCore::MediaControlTimelineContainerElement::create):
 21 (WebCore::MediaControlVolumeSliderContainerElement::MediaControlVolumeSliderContainerElement):
 22 (WebCore::MediaControlVolumeSliderContainerElement::create):
 23 (WebCore::MediaControlStatusDisplayElement::MediaControlStatusDisplayElement):
 24 (WebCore::MediaControlStatusDisplayElement::create):
 25 (WebCore::MediaControlInputElement::MediaControlInputElement):
 26 (WebCore::MediaControlInputElement::mediaElement):
 27 (WebCore::MediaControlMuteButtonElement::MediaControlMuteButtonElement):
 28 (WebCore::MediaControlPanelMuteButtonElement::MediaControlPanelMuteButtonElement):
 29 (WebCore::MediaControlPanelMuteButtonElement::create):
 30 (WebCore::MediaControlVolumeSliderMuteButtonElement::MediaControlVolumeSliderMuteButtonElement):
 31 (WebCore::MediaControlVolumeSliderMuteButtonElement::create):
 32 (WebCore::MediaControlPlayButtonElement::MediaControlPlayButtonElement):
 33 (WebCore::MediaControlPlayButtonElement::create):
 34 (WebCore::MediaControlSeekButtonElement::MediaControlSeekButtonElement):
 35 (WebCore::MediaControlSeekForwardButtonElement::MediaControlSeekForwardButtonElement):
 36 (WebCore::MediaControlSeekForwardButtonElement::create):
 37 (WebCore::MediaControlSeekBackButtonElement::MediaControlSeekBackButtonElement):
 38 (WebCore::MediaControlSeekBackButtonElement::create):
 39 (WebCore::MediaControlRewindButtonElement::MediaControlRewindButtonElement):
 40 (WebCore::MediaControlRewindButtonElement::create):
 41 (WebCore::MediaControlReturnToRealtimeButtonElement::MediaControlReturnToRealtimeButtonElement):
 42 (WebCore::MediaControlReturnToRealtimeButtonElement::create):
 43 (WebCore::MediaControlToggleClosedCaptionsButtonElement::MediaControlToggleClosedCaptionsButtonElement):
 44 (WebCore::MediaControlToggleClosedCaptionsButtonElement::create):
 45 (WebCore::MediaControlTimelineElement::MediaControlTimelineElement):
 46 (WebCore::MediaControlTimelineElement::create):
 47 (WebCore::MediaControlVolumeSliderElement::MediaControlVolumeSliderElement):
 48 (WebCore::MediaControlVolumeSliderElement::create):
 49 (WebCore::MediaControlFullscreenVolumeSliderElement::MediaControlFullscreenVolumeSliderElement):
 50 (WebCore::MediaControlFullscreenVolumeSliderElement::create):
 51 (WebCore::MediaControlFullscreenButtonElement::MediaControlFullscreenButtonElement):
 52 (WebCore::MediaControlFullscreenButtonElement::create):
 53 (WebCore::MediaControlFullscreenVolumeMinButtonElement::MediaControlFullscreenVolumeMinButtonElement):
 54 (WebCore::MediaControlFullscreenVolumeMinButtonElement::create):
 55 (WebCore::MediaControlFullscreenVolumeMaxButtonElement::MediaControlFullscreenVolumeMaxButtonElement):
 56 (WebCore::MediaControlFullscreenVolumeMaxButtonElement::create):
 57 (WebCore::MediaControlTimeDisplayElement::MediaControlTimeDisplayElement):
 58 (WebCore::MediaControlTimeRemainingDisplayElement::create):
 59 (WebCore::MediaControlTimeRemainingDisplayElement::MediaControlTimeRemainingDisplayElement):
 60 (WebCore::MediaControlCurrentTimeDisplayElement::create):
 61 (WebCore::MediaControlCurrentTimeDisplayElement::MediaControlCurrentTimeDisplayElement):
 62 * html/shadow/MediaControlElements.h:
 63 * html/shadow/MediaControlRootElement.cpp:
 64 (WebCore::MediaControlRootElement::MediaControlRootElement):
 65 (WebCore::MediaControlRootElement::create):
 66 (WebCore::MediaControlRootElement::reset):
 67 (WebCore::MediaControlRootElement::playbackStarted):
 68 (WebCore::MediaControlRootElement::playbackProgressed):
 69 (WebCore::MediaControlRootElement::playbackStopped):
 70 (WebCore::MediaControlRootElement::updateTimeDisplay):
 71 (WebCore::MediaControlRootElement::loadedMetadata):
 72 (WebCore::MediaControlRootElement::changedVolume):
 73 (WebCore::MediaControlRootElement::enteredFullscreen):
 74 (WebCore::MediaControlRootElement::showVolumeSlider):
 75 (WebCore::MediaControlRootElement::defaultEventHandler):
 76 (WebCore::MediaControlRootElement::startHideFullscreenControlsTimer):
 77 (WebCore::MediaControlRootElement::hideFullscreenControlsTimerFired):
 78 * html/shadow/MediaControlRootElement.h:
 79 * html/shadow/MediaControlRootElementChromium.cpp:
 80 (WebCore::MediaControlRootElementChromium::MediaControlRootElementChromium):
 81 (WebCore::MediaControlRootElementChromium::create):
 82 (WebCore::MediaControlRootElementChromium::reset):
 83 (WebCore::MediaControlRootElementChromium::playbackStarted):
 84 (WebCore::MediaControlRootElementChromium::playbackProgressed):
 85 (WebCore::MediaControlRootElementChromium::playbackStopped):
 86 (WebCore::MediaControlRootElementChromium::updateTimeDisplay):
 87 (WebCore::MediaControlRootElementChromium::defaultEventHandler):
 88 (WebCore::MediaControlRootElementChromium::changedVolume):
 89 (WebCore::MediaControlRootElementChromium::showVolumeSlider):
 90 * html/shadow/MediaControlRootElementChromium.h:
 91 * html/shadow/MediaControls.cpp:
 92 (WebCore::hostMediaElementFor):
 93 (WebCore::MediaControls::MediaControls):
 94 (WebCore::MediaControls::mediaElement):
 95 * html/shadow/MediaControls.h:
 96
1972011-12-01 Rafael Weinstein <rafaelw@chromium.org>
298
399 [MutationObservers] StyleAttributeMutationScope shouldn't be implemented with static classes

Source/WebCore/html/shadow/MediaControlElements.cpp

@@MediaControlElementType mediaControlElementType(Node* node)
8080
8181// ----------------------------
8282
83 MediaControlElement::MediaControlElement(HTMLMediaElement* mediaElement)
84  : HTMLDivElement(divTag, mediaElement->document())
85  , m_mediaElement(mediaElement)
 83MediaControlElement::MediaControlElement(Document* document)
 84 : HTMLDivElement(divTag, document)
8685{
8786}
8887

@@void MediaControlElement::hide()
9695 ensureInlineStyleDecl()->setProperty(CSSPropertyDisplay, CSSValueNone);
9796}
9897
 98HTMLMediaElement* MediaControlElement::mediaElement() const
 99{
 100 return hostMediaElementFor(this);
 101}
 102
99103// ----------------------------
100104
101 inline MediaControlPanelElement::MediaControlPanelElement(HTMLMediaElement* mediaElement)
102  : MediaControlElement(mediaElement)
 105inline MediaControlPanelElement::MediaControlPanelElement(Document* document)
 106 : MediaControlElement(document)
103107 , m_canBeDragged(false)
104108 , m_isBeingDragged(false)
105109 , m_opaque(true)
106110{
107111}
108112
109 PassRefPtr<MediaControlPanelElement> MediaControlPanelElement::create(HTMLMediaElement* mediaElement)
 113PassRefPtr<MediaControlPanelElement> MediaControlPanelElement::create(Document* document)
110114{
111  return adoptRef(new MediaControlPanelElement(mediaElement));
 115 return adoptRef(new MediaControlPanelElement(document));
112116}
113117
114118MediaControlElementType MediaControlPanelElement::displayType() const

@@void MediaControlPanelElement::setCanBeDragged(bool canBeDragged)
252256
253257// ----------------------------
254258
255 inline MediaControlTimelineContainerElement::MediaControlTimelineContainerElement(HTMLMediaElement* mediaElement)
256  : MediaControlElement(mediaElement)
 259inline MediaControlTimelineContainerElement::MediaControlTimelineContainerElement(Document* document)
 260 : MediaControlElement(document)
257261{
258262}
259263
260 PassRefPtr<MediaControlTimelineContainerElement> MediaControlTimelineContainerElement::create(HTMLMediaElement* mediaElement)
 264PassRefPtr<MediaControlTimelineContainerElement> MediaControlTimelineContainerElement::create(Document* document)
261265{
262  RefPtr<MediaControlTimelineContainerElement> element = adoptRef(new MediaControlTimelineContainerElement(mediaElement));
 266 RefPtr<MediaControlTimelineContainerElement> element = adoptRef(new MediaControlTimelineContainerElement(document));
263267 element->hide();
264268 return element.release();
265269}

@@void RenderMediaVolumeSliderContainer::layout()
305309 setY(offset.y() + buttonBox->offsetTop());
306310}
307311
308 inline MediaControlVolumeSliderContainerElement::MediaControlVolumeSliderContainerElement(HTMLMediaElement* mediaElement)
309  : MediaControlElement(mediaElement)
 312inline MediaControlVolumeSliderContainerElement::MediaControlVolumeSliderContainerElement(Document* document)
 313 : MediaControlElement(document)
310314{
311315}
312316
313 PassRefPtr<MediaControlVolumeSliderContainerElement> MediaControlVolumeSliderContainerElement::create(HTMLMediaElement* mediaElement)
 317PassRefPtr<MediaControlVolumeSliderContainerElement> MediaControlVolumeSliderContainerElement::create(Document* document)
314318{
315  RefPtr<MediaControlVolumeSliderContainerElement> element = adoptRef(new MediaControlVolumeSliderContainerElement(mediaElement));
 319 RefPtr<MediaControlVolumeSliderContainerElement> element = adoptRef(new MediaControlVolumeSliderContainerElement(document));
316320 element->hide();
317321 return element.release();
318322}

@@const AtomicString& MediaControlVolumeSliderContainerElement::shadowPseudoId() c
352356
353357// ----------------------------
354358
355 inline MediaControlStatusDisplayElement::MediaControlStatusDisplayElement(HTMLMediaElement* mediaElement)
356  : MediaControlElement(mediaElement)
 359inline MediaControlStatusDisplayElement::MediaControlStatusDisplayElement(Document* document)
 360 : MediaControlElement(document)
357361 , m_stateBeingDisplayed(Nothing)
358362{
359363}
360364
361 PassRefPtr<MediaControlStatusDisplayElement> MediaControlStatusDisplayElement::create(HTMLMediaElement* mediaElement)
 365PassRefPtr<MediaControlStatusDisplayElement> MediaControlStatusDisplayElement::create(Document* document)
362366{
363  RefPtr<MediaControlStatusDisplayElement> element = adoptRef(new MediaControlStatusDisplayElement(mediaElement));
 367 RefPtr<MediaControlStatusDisplayElement> element = adoptRef(new MediaControlStatusDisplayElement(document));
364368 element->hide();
365369 return element.release();
366370}

@@const AtomicString& MediaControlStatusDisplayElement::shadowPseudoId() const
413417
414418// ----------------------------
415419
416 MediaControlInputElement::MediaControlInputElement(HTMLMediaElement* mediaElement, MediaControlElementType displayType)
417  : HTMLInputElement(inputTag, mediaElement->document(), 0, false)
418  , m_mediaElement(mediaElement)
 420MediaControlInputElement::MediaControlInputElement(Document* document, MediaControlElementType displayType)
 421 : HTMLInputElement(inputTag, document, 0, false)
419422 , m_displayType(displayType)
420423{
421424}
422425
 426HTMLMediaElement* MediaControlInputElement::mediaElement() const
 427{
 428 return hostMediaElementFor(this);
 429}
 430
423431void MediaControlInputElement::show()
424432{
425433 ensureInlineStyleDecl()->removeProperty(CSSPropertyDisplay);

@@void MediaControlInputElement::setDisplayType(MediaControlElementType displayTyp
443451
444452// ----------------------------
445453
446 inline MediaControlMuteButtonElement::MediaControlMuteButtonElement(HTMLMediaElement* mediaElement, MediaControlElementType displayType)
447  : MediaControlInputElement(mediaElement, displayType)
 454inline MediaControlMuteButtonElement::MediaControlMuteButtonElement(Document* document, MediaControlElementType displayType)
 455 : MediaControlInputElement(document, displayType)
448456{
449457}
450458

@@void MediaControlMuteButtonElement::updateDisplayType()
470478
471479// ----------------------------
472480
473 inline MediaControlPanelMuteButtonElement::MediaControlPanelMuteButtonElement(HTMLMediaElement* mediaElement, MediaControls* controls)
474  : MediaControlMuteButtonElement(mediaElement, MediaMuteButton)
 481inline MediaControlPanelMuteButtonElement::MediaControlPanelMuteButtonElement(Document* document, MediaControls* controls)
 482 : MediaControlMuteButtonElement(document, MediaMuteButton)
475483 , m_controls(controls)
476484{
477485}
478486
479 PassRefPtr<MediaControlPanelMuteButtonElement> MediaControlPanelMuteButtonElement::create(HTMLMediaElement* mediaElement, MediaControls* controls)
 487PassRefPtr<MediaControlPanelMuteButtonElement> MediaControlPanelMuteButtonElement::create(Document* document, MediaControls* controls)
480488{
481489 ASSERT(controls);
482490
483  RefPtr<MediaControlPanelMuteButtonElement> button = adoptRef(new MediaControlPanelMuteButtonElement(mediaElement, controls));
 491 RefPtr<MediaControlPanelMuteButtonElement> button = adoptRef(new MediaControlPanelMuteButtonElement(document, controls));
484492 button->setType("button");
485493 return button.release();
486494}

@@const AtomicString& MediaControlPanelMuteButtonElement::shadowPseudoId() const
501509
502510// ----------------------------
503511
504 inline MediaControlVolumeSliderMuteButtonElement::MediaControlVolumeSliderMuteButtonElement(HTMLMediaElement* mediaElement)
505  : MediaControlMuteButtonElement(mediaElement, MediaMuteButton)
 512inline MediaControlVolumeSliderMuteButtonElement::MediaControlVolumeSliderMuteButtonElement(Document* document)
 513 : MediaControlMuteButtonElement(document, MediaMuteButton)
506514{
507515}
508516
509 PassRefPtr<MediaControlVolumeSliderMuteButtonElement> MediaControlVolumeSliderMuteButtonElement::create(HTMLMediaElement* mediaElement)
 517PassRefPtr<MediaControlVolumeSliderMuteButtonElement> MediaControlVolumeSliderMuteButtonElement::create(Document* document)
510518{
511  RefPtr<MediaControlVolumeSliderMuteButtonElement> button = adoptRef(new MediaControlVolumeSliderMuteButtonElement(mediaElement));
 519 RefPtr<MediaControlVolumeSliderMuteButtonElement> button = adoptRef(new MediaControlVolumeSliderMuteButtonElement(document));
512520 button->setType("button");
513521 return button.release();
514522}

@@const AtomicString& MediaControlVolumeSliderMuteButtonElement::shadowPseudoId()
521529
522530// ----------------------------
523531
524 inline MediaControlPlayButtonElement::MediaControlPlayButtonElement(HTMLMediaElement* mediaElement)
525  : MediaControlInputElement(mediaElement, MediaPlayButton)
 532inline MediaControlPlayButtonElement::MediaControlPlayButtonElement(Document* document)
 533 : MediaControlInputElement(document, MediaPlayButton)
526534{
527535}
528536
529 PassRefPtr<MediaControlPlayButtonElement> MediaControlPlayButtonElement::create(HTMLMediaElement* mediaElement)
 537PassRefPtr<MediaControlPlayButtonElement> MediaControlPlayButtonElement::create(Document* document)
530538{
531  RefPtr<MediaControlPlayButtonElement> button = adoptRef(new MediaControlPlayButtonElement(mediaElement));
 539 RefPtr<MediaControlPlayButtonElement> button = adoptRef(new MediaControlPlayButtonElement(document));
532540 button->setType("button");
533541 return button.release();
534542}

@@const AtomicString& MediaControlPlayButtonElement::shadowPseudoId() const
556564
557565// ----------------------------
558566
559 inline MediaControlSeekButtonElement::MediaControlSeekButtonElement(HTMLMediaElement* mediaElement, MediaControlElementType displayType)
560  : MediaControlInputElement(mediaElement, displayType)
 567inline MediaControlSeekButtonElement::MediaControlSeekButtonElement(Document* document, MediaControlElementType displayType)
 568 : MediaControlInputElement(document, displayType)
561569 , m_actionOnStop(Nothing)
562570 , m_seekType(Skip)
563571 , m_seekTimer(this, &MediaControlSeekButtonElement::seekTimerFired)

@@void MediaControlSeekButtonElement::seekTimerFired(Timer<MediaControlSeekButtonE
637645
638646// ----------------------------
639647
640 inline MediaControlSeekForwardButtonElement::MediaControlSeekForwardButtonElement(HTMLMediaElement* mediaElement)
641  : MediaControlSeekButtonElement(mediaElement, MediaSeekForwardButton)
 648inline MediaControlSeekForwardButtonElement::MediaControlSeekForwardButtonElement(Document* document)
 649 : MediaControlSeekButtonElement(document, MediaSeekForwardButton)
642650{
643651}
644652
645 PassRefPtr<MediaControlSeekForwardButtonElement> MediaControlSeekForwardButtonElement::create(HTMLMediaElement* mediaElement)
 653PassRefPtr<MediaControlSeekForwardButtonElement> MediaControlSeekForwardButtonElement::create(Document* document)
646654{
647  RefPtr<MediaControlSeekForwardButtonElement> button = adoptRef(new MediaControlSeekForwardButtonElement(mediaElement));
 655 RefPtr<MediaControlSeekForwardButtonElement> button = adoptRef(new MediaControlSeekForwardButtonElement(document));
648656 button->setType("button");
649657 return button.release();
650658}

@@const AtomicString& MediaControlSeekForwardButtonElement::shadowPseudoId() const
657665
658666// ----------------------------
659667
660 inline MediaControlSeekBackButtonElement::MediaControlSeekBackButtonElement(HTMLMediaElement* mediaElement)
661  : MediaControlSeekButtonElement(mediaElement, MediaSeekBackButton)
 668inline MediaControlSeekBackButtonElement::MediaControlSeekBackButtonElement(Document* document)
 669 : MediaControlSeekButtonElement(document, MediaSeekBackButton)
662670{
663671}
664672
665 PassRefPtr<MediaControlSeekBackButtonElement> MediaControlSeekBackButtonElement::create(HTMLMediaElement* mediaElement)
 673PassRefPtr<MediaControlSeekBackButtonElement> MediaControlSeekBackButtonElement::create(Document* document)
666674{
667  RefPtr<MediaControlSeekBackButtonElement> button = adoptRef(new MediaControlSeekBackButtonElement(mediaElement));
 675 RefPtr<MediaControlSeekBackButtonElement> button = adoptRef(new MediaControlSeekBackButtonElement(document));
668676 button->setType("button");
669677 return button.release();
670678}

@@const AtomicString& MediaControlSeekBackButtonElement::shadowPseudoId() const
677685
678686// ----------------------------
679687
680 inline MediaControlRewindButtonElement::MediaControlRewindButtonElement(HTMLMediaElement* element)
681  : MediaControlInputElement(element, MediaRewindButton)
 688inline MediaControlRewindButtonElement::MediaControlRewindButtonElement(Document* document)
 689 : MediaControlInputElement(document, MediaRewindButton)
682690{
683691}
684692
685 PassRefPtr<MediaControlRewindButtonElement> MediaControlRewindButtonElement::create(HTMLMediaElement* mediaElement)
 693PassRefPtr<MediaControlRewindButtonElement> MediaControlRewindButtonElement::create(Document* document)
686694{
687  RefPtr<MediaControlRewindButtonElement> button = adoptRef(new MediaControlRewindButtonElement(mediaElement));
 695 RefPtr<MediaControlRewindButtonElement> button = adoptRef(new MediaControlRewindButtonElement(document));
688696 button->setType("button");
689697 return button.release();
690698}

@@const AtomicString& MediaControlRewindButtonElement::shadowPseudoId() const
706714
707715// ----------------------------
708716
709 inline MediaControlReturnToRealtimeButtonElement::MediaControlReturnToRealtimeButtonElement(HTMLMediaElement* mediaElement)
710  : MediaControlInputElement(mediaElement, MediaReturnToRealtimeButton)
 717inline MediaControlReturnToRealtimeButtonElement::MediaControlReturnToRealtimeButtonElement(Document* document)
 718 : MediaControlInputElement(document, MediaReturnToRealtimeButton)
711719{
712720}
713721
714 PassRefPtr<MediaControlReturnToRealtimeButtonElement> MediaControlReturnToRealtimeButtonElement::create(HTMLMediaElement* mediaElement)
 722PassRefPtr<MediaControlReturnToRealtimeButtonElement> MediaControlReturnToRealtimeButtonElement::create(Document* document)
715723{
716  RefPtr<MediaControlReturnToRealtimeButtonElement> button = adoptRef(new MediaControlReturnToRealtimeButtonElement(mediaElement));
 724 RefPtr<MediaControlReturnToRealtimeButtonElement> button = adoptRef(new MediaControlReturnToRealtimeButtonElement(document));
717725 button->setType("button");
718726 button->hide();
719727 return button.release();

@@const AtomicString& MediaControlReturnToRealtimeButtonElement::shadowPseudoId()
736744
737745// ----------------------------
738746
739 inline MediaControlToggleClosedCaptionsButtonElement::MediaControlToggleClosedCaptionsButtonElement(HTMLMediaElement* mediaElement)
740  : MediaControlInputElement(mediaElement, MediaShowClosedCaptionsButton)
 747inline MediaControlToggleClosedCaptionsButtonElement::MediaControlToggleClosedCaptionsButtonElement(Document* document)
 748 : MediaControlInputElement(document, MediaShowClosedCaptionsButton)
741749{
742750}
743751
744 PassRefPtr<MediaControlToggleClosedCaptionsButtonElement> MediaControlToggleClosedCaptionsButtonElement::create(HTMLMediaElement* mediaElement)
 752PassRefPtr<MediaControlToggleClosedCaptionsButtonElement> MediaControlToggleClosedCaptionsButtonElement::create(Document* document)
745753{
746  RefPtr<MediaControlToggleClosedCaptionsButtonElement> button = adoptRef(new MediaControlToggleClosedCaptionsButtonElement(mediaElement));
 754 RefPtr<MediaControlToggleClosedCaptionsButtonElement> button = adoptRef(new MediaControlToggleClosedCaptionsButtonElement(document));
747755 button->setType("button");
748756 button->hide();
749757 return button.release();

@@const AtomicString& MediaControlToggleClosedCaptionsButtonElement::shadowPseudoI
774782
775783// ----------------------------
776784
777 MediaControlTimelineElement::MediaControlTimelineElement(HTMLMediaElement* mediaElement, MediaControls* controls)
778  : MediaControlInputElement(mediaElement, MediaSlider)
 785MediaControlTimelineElement::MediaControlTimelineElement(Document* document, MediaControls* controls)
 786 : MediaControlInputElement(document, MediaSlider)
779787 , m_controls(controls)
780788{
781789}
782790
783 PassRefPtr<MediaControlTimelineElement> MediaControlTimelineElement::create(HTMLMediaElement* mediaElement, MediaControls* controls)
 791PassRefPtr<MediaControlTimelineElement> MediaControlTimelineElement::create(Document* document, MediaControls* controls)
784792{
785793 ASSERT(controls);
786794
787  RefPtr<MediaControlTimelineElement> timeline = adoptRef(new MediaControlTimelineElement(mediaElement, controls));
 795 RefPtr<MediaControlTimelineElement> timeline = adoptRef(new MediaControlTimelineElement(document, controls));
788796 timeline->setType("range");
789797 timeline->setAttribute(precisionAttr, "float");
790798 return timeline.release();

@@const AtomicString& MediaControlTimelineElement::shadowPseudoId() const
841849
842850// ----------------------------
843851
844 inline MediaControlVolumeSliderElement::MediaControlVolumeSliderElement(HTMLMediaElement* mediaElement)
845  : MediaControlInputElement(mediaElement, MediaVolumeSlider)
 852inline MediaControlVolumeSliderElement::MediaControlVolumeSliderElement(Document* document)
 853 : MediaControlInputElement(document, MediaVolumeSlider)
846854{
847855}
848856
849 PassRefPtr<MediaControlVolumeSliderElement> MediaControlVolumeSliderElement::create(HTMLMediaElement* mediaElement)
 857PassRefPtr<MediaControlVolumeSliderElement> MediaControlVolumeSliderElement::create(Document* document, float volume)
850858{
851  RefPtr<MediaControlVolumeSliderElement> slider = adoptRef(new MediaControlVolumeSliderElement(mediaElement));
 859 RefPtr<MediaControlVolumeSliderElement> slider = adoptRef(new MediaControlVolumeSliderElement(document));
852860 slider->setType("range");
853861 slider->setAttribute(precisionAttr, "float");
854862 slider->setAttribute(maxAttr, "1");
855  slider->setAttribute(valueAttr, String::number(mediaElement->volume()));
 863 slider->setAttribute(valueAttr, String::number(volume));
856864 return slider.release();
857865}
858866

@@const AtomicString& MediaControlVolumeSliderElement::shadowPseudoId() const
892900
893901// ----------------------------
894902
895 inline MediaControlFullscreenVolumeSliderElement::MediaControlFullscreenVolumeSliderElement(HTMLMediaElement* mediaElement)
896  : MediaControlVolumeSliderElement(mediaElement)
 903inline MediaControlFullscreenVolumeSliderElement::MediaControlFullscreenVolumeSliderElement(Document* document)
 904 : MediaControlVolumeSliderElement(document)
897905{
898906}
899907
900 PassRefPtr<MediaControlFullscreenVolumeSliderElement> MediaControlFullscreenVolumeSliderElement::create(HTMLMediaElement* mediaElement)
 908PassRefPtr<MediaControlFullscreenVolumeSliderElement> MediaControlFullscreenVolumeSliderElement::create(Document* document, float volume)
901909{
902  RefPtr<MediaControlFullscreenVolumeSliderElement> slider = adoptRef(new MediaControlFullscreenVolumeSliderElement(mediaElement));
 910 RefPtr<MediaControlFullscreenVolumeSliderElement> slider = adoptRef(new MediaControlFullscreenVolumeSliderElement(document));
903911 slider->setType("range");
904912 slider->setAttribute(precisionAttr, "float");
905913 slider->setAttribute(maxAttr, "1");
906  slider->setAttribute(valueAttr, String::number(mediaElement->volume()));
 914 slider->setAttribute(valueAttr, String::number(volume));
907915 return slider.release();
908916}
909917

@@const AtomicString& MediaControlFullscreenVolumeSliderElement::shadowPseudoId()
915923
916924// ----------------------------
917925
918 inline MediaControlFullscreenButtonElement::MediaControlFullscreenButtonElement(HTMLMediaElement* mediaElement, MediaControls* controls)
919  : MediaControlInputElement(mediaElement, MediaFullscreenButton)
 926inline MediaControlFullscreenButtonElement::MediaControlFullscreenButtonElement(Document* document, MediaControls* controls)
 927 : MediaControlInputElement(document, MediaFullscreenButton)
920928 , m_controls(controls)
921929{
922930}
923931
924 PassRefPtr<MediaControlFullscreenButtonElement> MediaControlFullscreenButtonElement::create(HTMLMediaElement* mediaElement, MediaControls* controls)
 932PassRefPtr<MediaControlFullscreenButtonElement> MediaControlFullscreenButtonElement::create(Document* document, MediaControls* controls)
925933{
926934 ASSERT(controls);
927935
928  RefPtr<MediaControlFullscreenButtonElement> button = adoptRef(new MediaControlFullscreenButtonElement(mediaElement, controls));
 936 RefPtr<MediaControlFullscreenButtonElement> button = adoptRef(new MediaControlFullscreenButtonElement(document, controls));
929937 button->setType("button");
930938 button->hide();
931939 return button.release();

@@const AtomicString& MediaControlFullscreenButtonElement::shadowPseudoId() const
961969
962970// ----------------------------
963971
964 inline MediaControlFullscreenVolumeMinButtonElement::MediaControlFullscreenVolumeMinButtonElement(HTMLMediaElement* mediaElement)
965  : MediaControlInputElement(mediaElement, MediaUnMuteButton)
 972inline MediaControlFullscreenVolumeMinButtonElement::MediaControlFullscreenVolumeMinButtonElement(Document* document)
 973 : MediaControlInputElement(document, MediaUnMuteButton)
966974{
967975}
968976
969 PassRefPtr<MediaControlFullscreenVolumeMinButtonElement> MediaControlFullscreenVolumeMinButtonElement::create(HTMLMediaElement* mediaElement)
 977PassRefPtr<MediaControlFullscreenVolumeMinButtonElement> MediaControlFullscreenVolumeMinButtonElement::create(Document* document)
970978{
971  RefPtr<MediaControlFullscreenVolumeMinButtonElement> button = adoptRef(new MediaControlFullscreenVolumeMinButtonElement(mediaElement));
 979 RefPtr<MediaControlFullscreenVolumeMinButtonElement> button = adoptRef(new MediaControlFullscreenVolumeMinButtonElement(document));
972980 button->setType("button");
973981 return button.release();
974982}

@@const AtomicString& MediaControlFullscreenVolumeMinButtonElement::shadowPseudoId
991999
9921000// ----------------------------
9931001
994 inline MediaControlFullscreenVolumeMaxButtonElement::MediaControlFullscreenVolumeMaxButtonElement(HTMLMediaElement* mediaElement)
995 : MediaControlInputElement(mediaElement, MediaMuteButton)
 1002inline MediaControlFullscreenVolumeMaxButtonElement::MediaControlFullscreenVolumeMaxButtonElement(Document* document)
 1003: MediaControlInputElement(document, MediaMuteButton)
9961004{
9971005}
9981006
999 PassRefPtr<MediaControlFullscreenVolumeMaxButtonElement> MediaControlFullscreenVolumeMaxButtonElement::create(HTMLMediaElement* mediaElement)
 1007PassRefPtr<MediaControlFullscreenVolumeMaxButtonElement> MediaControlFullscreenVolumeMaxButtonElement::create(Document* document)
10001008{
1001  RefPtr<MediaControlFullscreenVolumeMaxButtonElement> button = adoptRef(new MediaControlFullscreenVolumeMaxButtonElement(mediaElement));
 1009 RefPtr<MediaControlFullscreenVolumeMaxButtonElement> button = adoptRef(new MediaControlFullscreenVolumeMaxButtonElement(document));
10021010 button->setType("button");
10031011 return button.release();
10041012}

@@void RenderMediaControlTimeDisplay::layout()
10491057 setWidth(0);
10501058}
10511059
1052 inline MediaControlTimeDisplayElement::MediaControlTimeDisplayElement(HTMLMediaElement* mediaElement)
1053  : MediaControlElement(mediaElement)
 1060inline MediaControlTimeDisplayElement::MediaControlTimeDisplayElement(Document* document)
 1061 : MediaControlElement(document)
10541062 , m_currentValue(0)
10551063{
10561064}

@@RenderObject* MediaControlTimeDisplayElement::createRenderer(RenderArena* arena,
10671075
10681076// ----------------------------
10691077
1070 PassRefPtr<MediaControlTimeRemainingDisplayElement> MediaControlTimeRemainingDisplayElement::create(HTMLMediaElement* mediaElement)
 1078PassRefPtr<MediaControlTimeRemainingDisplayElement> MediaControlTimeRemainingDisplayElement::create(Document* document)
10711079{
1072  return adoptRef(new MediaControlTimeRemainingDisplayElement(mediaElement));
 1080 return adoptRef(new MediaControlTimeRemainingDisplayElement(document));
10731081}
10741082
1075 MediaControlTimeRemainingDisplayElement::MediaControlTimeRemainingDisplayElement(HTMLMediaElement* mediaElement)
1076  : MediaControlTimeDisplayElement(mediaElement)
 1083MediaControlTimeRemainingDisplayElement::MediaControlTimeRemainingDisplayElement(Document* document)
 1084 : MediaControlTimeDisplayElement(document)
10771085{
10781086}
10791087

@@const AtomicString& MediaControlTimeRemainingDisplayElement::shadowPseudoId() co
10901098
10911099// ----------------------------
10921100
1093 PassRefPtr<MediaControlCurrentTimeDisplayElement> MediaControlCurrentTimeDisplayElement::create(HTMLMediaElement* mediaElement)
 1101PassRefPtr<MediaControlCurrentTimeDisplayElement> MediaControlCurrentTimeDisplayElement::create(Document* document)
10941102{
1095  return adoptRef(new MediaControlCurrentTimeDisplayElement(mediaElement));
 1103 return adoptRef(new MediaControlCurrentTimeDisplayElement(document));
10961104}
10971105
1098 MediaControlCurrentTimeDisplayElement::MediaControlCurrentTimeDisplayElement(HTMLMediaElement* mediaElement)
1099  : MediaControlTimeDisplayElement(mediaElement)
 1106MediaControlCurrentTimeDisplayElement::MediaControlCurrentTimeDisplayElement(Document* document)
 1107 : MediaControlTimeDisplayElement(document)
11001108{
11011109}
11021110

Source/WebCore/html/shadow/MediaControlElements.h

@@public:
8484
8585 virtual MediaControlElementType displayType() const = 0;
8686
87  HTMLMediaElement* mediaElement() const { return m_mediaElement; }
88 
 87 HTMLMediaElement* mediaElement() const;
8988protected:
90  MediaControlElement(HTMLMediaElement*);
 89 MediaControlElement(Document*);
9190
9291private:
9392 virtual bool isMediaControlElement() const { return true; }
94 
95  HTMLMediaElement* m_mediaElement;
9693};
9794
9895// ----------------------------
9996
10097class MediaControlPanelElement : public MediaControlElement {
10198public:
102  static PassRefPtr<MediaControlPanelElement> create(HTMLMediaElement*);
 99 static PassRefPtr<MediaControlPanelElement> create(Document*);
103100
104101 void setCanBeDragged(bool);
105102 void resetPosition();

@@public:
107104 void makeTransparent();
108105
109106private:
110  MediaControlPanelElement(HTMLMediaElement*);
 107 MediaControlPanelElement(Document*);
111108 virtual MediaControlElementType displayType() const;
112109 virtual const AtomicString& shadowPseudoId() const;
113110 virtual void defaultEventHandler(Event*);

@@private:
129126
130127class MediaControlTimelineContainerElement : public MediaControlElement {
131128public:
132  static PassRefPtr<MediaControlTimelineContainerElement> create(HTMLMediaElement*);
 129 static PassRefPtr<MediaControlTimelineContainerElement> create(Document*);
133130
134131private:
135  MediaControlTimelineContainerElement(HTMLMediaElement*);
 132 MediaControlTimelineContainerElement(Document*);
136133 virtual const AtomicString& shadowPseudoId() const;
137134
138135 virtual MediaControlElementType displayType() const;

@@private:
142139
143140class MediaControlVolumeSliderContainerElement : public MediaControlElement {
144141public:
145  static PassRefPtr<MediaControlVolumeSliderContainerElement> create(HTMLMediaElement*);
 142 static PassRefPtr<MediaControlVolumeSliderContainerElement> create(Document*);
146143
147144private:
148  MediaControlVolumeSliderContainerElement(HTMLMediaElement*);
 145 MediaControlVolumeSliderContainerElement(Document*);
149146 virtual RenderObject* createRenderer(RenderArena*, RenderStyle*);
150147 virtual void defaultEventHandler(Event*);
151148 virtual MediaControlElementType displayType() const;

@@private:
156153
157154class MediaControlStatusDisplayElement : public MediaControlElement {
158155public:
159  static PassRefPtr<MediaControlStatusDisplayElement> create(HTMLMediaElement*);
 156 static PassRefPtr<MediaControlStatusDisplayElement> create(Document*);
160157
161158 void update();
162159
163160private:
164  MediaControlStatusDisplayElement(HTMLMediaElement*);
 161 MediaControlStatusDisplayElement(Document*);
165162
166163 virtual MediaControlElementType displayType() const;
167164 virtual const AtomicString& shadowPseudoId() const;

@@public:
179176
180177 MediaControlElementType displayType() const { return m_displayType; }
181178
182  HTMLMediaElement* mediaElement() const { return m_mediaElement; }
 179 HTMLMediaElement* mediaElement() const;
183180
184181protected:
185  MediaControlInputElement(HTMLMediaElement*, MediaControlElementType);
 182 MediaControlInputElement(Document*, MediaControlElementType);
186183
187184 void setDisplayType(MediaControlElementType);
188185

@@private:
191188
192189 virtual void updateDisplayType() { }
193190
194  HTMLMediaElement* m_mediaElement;
195191 MediaControlElementType m_displayType;
196192};
197193

@@public:
202198 void changedMute();
203199
204200protected:
205  MediaControlMuteButtonElement(HTMLMediaElement*, MediaControlElementType);
 201 MediaControlMuteButtonElement(Document*, MediaControlElementType);
206202 virtual void defaultEventHandler(Event*);
207203
208204

@@private:
214210
215211class MediaControlPanelMuteButtonElement : public MediaControlMuteButtonElement {
216212public:
217  static PassRefPtr<MediaControlPanelMuteButtonElement> create(HTMLMediaElement*, MediaControls*);
 213 static PassRefPtr<MediaControlPanelMuteButtonElement> create(Document*, MediaControls*);
218214
219215private:
220  MediaControlPanelMuteButtonElement(HTMLMediaElement*, MediaControls*);
 216 MediaControlPanelMuteButtonElement(Document*, MediaControls*);
221217
222218 virtual void defaultEventHandler(Event*);
223219 virtual const AtomicString& shadowPseudoId() const;

@@private:
229225
230226class MediaControlVolumeSliderMuteButtonElement : public MediaControlMuteButtonElement {
231227public:
232  static PassRefPtr<MediaControlVolumeSliderMuteButtonElement> create(HTMLMediaElement*);
 228 static PassRefPtr<MediaControlVolumeSliderMuteButtonElement> create(Document*);
233229
234230private:
235  MediaControlVolumeSliderMuteButtonElement(HTMLMediaElement*);
 231 MediaControlVolumeSliderMuteButtonElement(Document*);
236232
237233 virtual const AtomicString& shadowPseudoId() const;
238234};

@@private:
242238
243239class MediaControlPlayButtonElement : public MediaControlInputElement {
244240public:
245  static PassRefPtr<MediaControlPlayButtonElement> create(HTMLMediaElement*);
 241 static PassRefPtr<MediaControlPlayButtonElement> create(Document*);
246242
247243 virtual void defaultEventHandler(Event*);
248244 virtual void updateDisplayType();
249245
250246private:
251  MediaControlPlayButtonElement(HTMLMediaElement*);
 247 MediaControlPlayButtonElement(Document*);
252248
253249 virtual const AtomicString& shadowPseudoId() const;
254250};

@@public:
260256 virtual void defaultEventHandler(Event*);
261257
262258protected:
263  MediaControlSeekButtonElement(HTMLMediaElement*, MediaControlElementType);
 259 MediaControlSeekButtonElement(Document*, MediaControlElementType);
264260
265261private:
266262 virtual bool isForwardButton() const = 0;

@@private:
282278
283279class MediaControlSeekForwardButtonElement : public MediaControlSeekButtonElement {
284280public:
285  static PassRefPtr<MediaControlSeekForwardButtonElement> create(HTMLMediaElement*);
 281 static PassRefPtr<MediaControlSeekForwardButtonElement> create(Document*);
286282
287283private:
288  MediaControlSeekForwardButtonElement(HTMLMediaElement*);
 284 MediaControlSeekForwardButtonElement(Document*);
289285
290286 virtual bool isForwardButton() const { return true; }
291287 virtual const AtomicString& shadowPseudoId() const;

@@private:
295291
296292class MediaControlSeekBackButtonElement : public MediaControlSeekButtonElement {
297293public:
298  static PassRefPtr<MediaControlSeekBackButtonElement> create(HTMLMediaElement*);
 294 static PassRefPtr<MediaControlSeekBackButtonElement> create(Document*);
299295
300296private:
301  MediaControlSeekBackButtonElement(HTMLMediaElement*);
 297 MediaControlSeekBackButtonElement(Document*);
302298
303299 virtual bool isForwardButton() const { return false; }
304300 virtual const AtomicString& shadowPseudoId() const;

@@private:
308304
309305class MediaControlRewindButtonElement : public MediaControlInputElement {
310306public:
311  static PassRefPtr<MediaControlRewindButtonElement> create(HTMLMediaElement*);
 307 static PassRefPtr<MediaControlRewindButtonElement> create(Document*);
312308
313309 virtual void defaultEventHandler(Event*);
314310
315311private:
316  MediaControlRewindButtonElement(HTMLMediaElement*);
 312 MediaControlRewindButtonElement(Document*);
317313
318314 virtual const AtomicString& shadowPseudoId() const;
319315};

@@private:
322318
323319class MediaControlReturnToRealtimeButtonElement : public MediaControlInputElement {
324320public:
325  static PassRefPtr<MediaControlReturnToRealtimeButtonElement> create(HTMLMediaElement*);
 321 static PassRefPtr<MediaControlReturnToRealtimeButtonElement> create(Document*);
326322
327323 virtual void defaultEventHandler(Event*);
328324
329325private:
330  MediaControlReturnToRealtimeButtonElement(HTMLMediaElement*);
 326 MediaControlReturnToRealtimeButtonElement(Document*);
331327
332328 virtual const AtomicString& shadowPseudoId() const;
333329};

@@private:
336332
337333class MediaControlToggleClosedCaptionsButtonElement : public MediaControlInputElement {
338334public:
339  static PassRefPtr<MediaControlToggleClosedCaptionsButtonElement> create(HTMLMediaElement*);
 335 static PassRefPtr<MediaControlToggleClosedCaptionsButtonElement> create(Document*);
340336
341337 virtual void defaultEventHandler(Event*);
342338 virtual void updateDisplayType();
343339
344340private:
345  MediaControlToggleClosedCaptionsButtonElement(HTMLMediaElement*);
 341 MediaControlToggleClosedCaptionsButtonElement(Document*);
346342
347343 virtual const AtomicString& shadowPseudoId() const;
348344};

@@private:
351347
352348class MediaControlTimelineElement : public MediaControlInputElement {
353349public:
354  static PassRefPtr<MediaControlTimelineElement> create(HTMLMediaElement*, MediaControls*);
 350 static PassRefPtr<MediaControlTimelineElement> create(Document*, MediaControls*);
355351
356352 virtual void defaultEventHandler(Event*);
357353 void setPosition(float);
358354 void setDuration(float);
359355
360356private:
361  MediaControlTimelineElement(HTMLMediaElement*, MediaControls*);
 357 MediaControlTimelineElement(Document*, MediaControls*);
362358
363359 virtual const AtomicString& shadowPseudoId() const;
364360

@@private:
369365
370366class MediaControlVolumeSliderElement : public MediaControlInputElement {
371367public:
372  static PassRefPtr<MediaControlVolumeSliderElement> create(HTMLMediaElement*);
 368 static PassRefPtr<MediaControlVolumeSliderElement> create(Document*, float volume);
373369
374370 virtual void defaultEventHandler(Event*);
375371 void setVolume(float);
376372
377373protected:
378  MediaControlVolumeSliderElement(HTMLMediaElement*);
 374 MediaControlVolumeSliderElement(Document*);
379375
380376private:
381377 virtual const AtomicString& shadowPseudoId() const;

@@private:
385381
386382class MediaControlFullscreenButtonElement : public MediaControlInputElement {
387383public:
388  static PassRefPtr<MediaControlFullscreenButtonElement> create(HTMLMediaElement*, MediaControls*);
 384 static PassRefPtr<MediaControlFullscreenButtonElement> create(Document*, MediaControls*);
389385
390386 virtual void defaultEventHandler(Event*);
391387
392388private:
393  MediaControlFullscreenButtonElement(HTMLMediaElement*, MediaControls*);
 389 MediaControlFullscreenButtonElement(Document*, MediaControls*);
394390
395391 virtual const AtomicString& shadowPseudoId() const;
396392

@@private:
401397
402398class MediaControlFullscreenVolumeSliderElement : public MediaControlVolumeSliderElement {
403399public:
404  static PassRefPtr<MediaControlFullscreenVolumeSliderElement> create(HTMLMediaElement*);
 400 static PassRefPtr<MediaControlFullscreenVolumeSliderElement> create(Document*, float volume);
405401
406402private:
407  MediaControlFullscreenVolumeSliderElement(HTMLMediaElement*);
 403 MediaControlFullscreenVolumeSliderElement(Document*);
408404
409405 virtual const AtomicString& shadowPseudoId() const;
410406};

@@private:
413409
414410class MediaControlFullscreenVolumeMinButtonElement : public MediaControlInputElement {
415411public:
416  static PassRefPtr<MediaControlFullscreenVolumeMinButtonElement> create(HTMLMediaElement*);
 412 static PassRefPtr<MediaControlFullscreenVolumeMinButtonElement> create(Document*);
417413
418414 virtual void defaultEventHandler(Event*);
419415
420416private:
421  MediaControlFullscreenVolumeMinButtonElement(HTMLMediaElement*);
 417 MediaControlFullscreenVolumeMinButtonElement(Document*);
422418
423419 virtual const AtomicString& shadowPseudoId() const;
424420};

@@private:
427423
428424class MediaControlFullscreenVolumeMaxButtonElement : public MediaControlInputElement {
429425public:
430  static PassRefPtr<MediaControlFullscreenVolumeMaxButtonElement> create(HTMLMediaElement*);
 426 static PassRefPtr<MediaControlFullscreenVolumeMaxButtonElement> create(Document*);
431427
432428 virtual void defaultEventHandler(Event*);
433429
434430private:
435  MediaControlFullscreenVolumeMaxButtonElement(HTMLMediaElement*);
 431 MediaControlFullscreenVolumeMaxButtonElement(Document*);
436432
437433 virtual const AtomicString& shadowPseudoId() const;
438434};

@@public:
445441 float currentValue() const { return m_currentValue; }
446442
447443protected:
448  MediaControlTimeDisplayElement(HTMLMediaElement*);
 444 MediaControlTimeDisplayElement(Document*);
449445
450446private:
451447 virtual RenderObject* createRenderer(RenderArena*, RenderStyle*);

@@private:
457453
458454class MediaControlTimeRemainingDisplayElement : public MediaControlTimeDisplayElement {
459455public:
460  static PassRefPtr<MediaControlTimeRemainingDisplayElement> create(HTMLMediaElement*);
 456 static PassRefPtr<MediaControlTimeRemainingDisplayElement> create(Document*);
461457
462458private:
463  MediaControlTimeRemainingDisplayElement(HTMLMediaElement*);
 459 MediaControlTimeRemainingDisplayElement(Document*);
464460
465461 virtual MediaControlElementType displayType() const;
466462 virtual const AtomicString& shadowPseudoId() const;

@@private:
470466
471467class MediaControlCurrentTimeDisplayElement : public MediaControlTimeDisplayElement {
472468public:
473  static PassRefPtr<MediaControlCurrentTimeDisplayElement> create(HTMLMediaElement*);
 469 static PassRefPtr<MediaControlCurrentTimeDisplayElement> create(Document*);
474470
475471private:
476  MediaControlCurrentTimeDisplayElement(HTMLMediaElement*);
 472 MediaControlCurrentTimeDisplayElement(Document*);
477473
478474 virtual MediaControlElementType displayType() const;
479475 virtual const AtomicString& shadowPseudoId() const;

Source/WebCore/html/shadow/MediaControlRootElement.cpp

@@namespace WebCore {
4141
4242static const double timeWithoutMouseMovementBeforeHidingControls = 3;
4343
44 MediaControlRootElement::MediaControlRootElement(HTMLMediaElement* mediaElement)
45  : MediaControls(mediaElement)
46  , m_mediaElement(mediaElement)
 44MediaControlRootElement::MediaControlRootElement(Document* document)
 45 : MediaControls(document)
4746 , m_rewindButton(0)
4847 , m_playButton(0)
4948 , m_returnToRealTimeButton(0)

@@PassRefPtr<MediaControls> MediaControls::create(HTMLMediaElement* mediaElement)
7675
7776PassRefPtr<MediaControlRootElement> MediaControlRootElement::create(HTMLMediaElement* mediaElement)
7877{
79  if (!mediaElement->document()->page())
 78 Document* document = mediaElement->document();
 79 if (!document->page())
8080 return 0;
8181
82  RefPtr<MediaControlRootElement> controls = adoptRef(new MediaControlRootElement(mediaElement));
 82 RefPtr<MediaControlRootElement> controls = adoptRef(new MediaControlRootElement(document));
8383
84  RefPtr<MediaControlPanelElement> panel = MediaControlPanelElement::create(mediaElement);
 84 RefPtr<MediaControlPanelElement> panel = MediaControlPanelElement::create(document);
8585
8686 ExceptionCode ec;
8787
88  RefPtr<MediaControlRewindButtonElement> rewindButton = MediaControlRewindButtonElement::create(mediaElement);
 88 RefPtr<MediaControlRewindButtonElement> rewindButton = MediaControlRewindButtonElement::create(document);
8989 controls->m_rewindButton = rewindButton.get();
9090 panel->appendChild(rewindButton.release(), ec, true);
9191 if (ec)
9292 return 0;
9393
94  RefPtr<MediaControlPlayButtonElement> playButton = MediaControlPlayButtonElement::create(mediaElement);
 94 RefPtr<MediaControlPlayButtonElement> playButton = MediaControlPlayButtonElement::create(document);
9595 controls->m_playButton = playButton.get();
9696 panel->appendChild(playButton.release(), ec, true);
9797 if (ec)
9898 return 0;
9999
100  RefPtr<MediaControlReturnToRealtimeButtonElement> returnToRealtimeButton = MediaControlReturnToRealtimeButtonElement::create(mediaElement);
 100 RefPtr<MediaControlReturnToRealtimeButtonElement> returnToRealtimeButton = MediaControlReturnToRealtimeButtonElement::create(document);
101101 controls->m_returnToRealTimeButton = returnToRealtimeButton.get();
102102 panel->appendChild(returnToRealtimeButton.release(), ec, true);
103103 if (ec)
104104 return 0;
105105
106  if (mediaElement->document()->page()->theme()->usesMediaControlStatusDisplay()) {
107  RefPtr<MediaControlStatusDisplayElement> statusDisplay = MediaControlStatusDisplayElement::create(mediaElement);
 106 if (document->page()->theme()->usesMediaControlStatusDisplay()) {
 107 RefPtr<MediaControlStatusDisplayElement> statusDisplay = MediaControlStatusDisplayElement::create(document);
108108 controls->m_statusDisplay = statusDisplay.get();
109109 panel->appendChild(statusDisplay.release(), ec, true);
110110 if (ec)
111111 return 0;
112112 }
113113
114  RefPtr<MediaControlTimelineContainerElement> timelineContainer = MediaControlTimelineContainerElement::create(mediaElement);
 114 RefPtr<MediaControlTimelineContainerElement> timelineContainer = MediaControlTimelineContainerElement::create(document);
115115
116  RefPtr<MediaControlCurrentTimeDisplayElement> currentTimeDisplay = MediaControlCurrentTimeDisplayElement::create(mediaElement);
 116 RefPtr<MediaControlCurrentTimeDisplayElement> currentTimeDisplay = MediaControlCurrentTimeDisplayElement::create(document);
117117 controls->m_currentTimeDisplay = currentTimeDisplay.get();
118118 timelineContainer->appendChild(currentTimeDisplay.release(), ec, true);
119119 if (ec)
120120 return 0;
121121
122  RefPtr<MediaControlTimelineElement> timeline = MediaControlTimelineElement::create(mediaElement, controls.get());
 122 RefPtr<MediaControlTimelineElement> timeline = MediaControlTimelineElement::create(document, controls.get());
123123 controls->m_timeline = timeline.get();
124124 timelineContainer->appendChild(timeline.release(), ec, true);
125125 if (ec)
126126 return 0;
127127
128  RefPtr<MediaControlTimeRemainingDisplayElement> timeRemainingDisplay = MediaControlTimeRemainingDisplayElement::create(mediaElement);
 128 RefPtr<MediaControlTimeRemainingDisplayElement> timeRemainingDisplay = MediaControlTimeRemainingDisplayElement::create(document);
129129 controls->m_timeRemainingDisplay = timeRemainingDisplay.get();
130130 timelineContainer->appendChild(timeRemainingDisplay.release(), ec, true);
131131 if (ec)

@@PassRefPtr<MediaControlRootElement> MediaControlRootElement::create(HTMLMediaEle
137137 return 0;
138138
139139 // FIXME: Only create when needed <http://webkit.org/b/57163>
140  RefPtr<MediaControlSeekBackButtonElement> seekBackButton = MediaControlSeekBackButtonElement::create(mediaElement);
 140 RefPtr<MediaControlSeekBackButtonElement> seekBackButton = MediaControlSeekBackButtonElement::create(document);
141141 controls->m_seekBackButton = seekBackButton.get();
142142 panel->appendChild(seekBackButton.release(), ec, true);
143143 if (ec)
144144 return 0;
145145
146146 // FIXME: Only create when needed <http://webkit.org/b/57163>
147  RefPtr<MediaControlSeekForwardButtonElement> seekForwardButton = MediaControlSeekForwardButtonElement::create(mediaElement);
 147 RefPtr<MediaControlSeekForwardButtonElement> seekForwardButton = MediaControlSeekForwardButtonElement::create(document);
148148 controls->m_seekForwardButton = seekForwardButton.get();
149149 panel->appendChild(seekForwardButton.release(), ec, true);
150150 if (ec)
151151 return 0;
152152
153  if (mediaElement->document()->page()->theme()->supportsClosedCaptioning()) {
154  RefPtr<MediaControlToggleClosedCaptionsButtonElement> toggleClosedCaptionsButton = MediaControlToggleClosedCaptionsButtonElement::create(mediaElement);
 153 if (document->page()->theme()->supportsClosedCaptioning()) {
 154 RefPtr<MediaControlToggleClosedCaptionsButtonElement> toggleClosedCaptionsButton = MediaControlToggleClosedCaptionsButtonElement::create(document);
155155 controls->m_toggleClosedCaptionsButton = toggleClosedCaptionsButton.get();
156156 panel->appendChild(toggleClosedCaptionsButton.release(), ec, true);
157157 if (ec)

@@PassRefPtr<MediaControlRootElement> MediaControlRootElement::create(HTMLMediaEle
159159 }
160160
161161 // FIXME: Only create when needed <http://webkit.org/b/57163>
162  RefPtr<MediaControlFullscreenButtonElement> fullScreenButton = MediaControlFullscreenButtonElement::create(mediaElement, controls.get());
 162 RefPtr<MediaControlFullscreenButtonElement> fullScreenButton = MediaControlFullscreenButtonElement::create(document, controls.get());
163163 controls->m_fullScreenButton = fullScreenButton.get();
164164 panel->appendChild(fullScreenButton.release(), ec, true);
165165
166  RefPtr<MediaControlPanelMuteButtonElement> panelMuteButton = MediaControlPanelMuteButtonElement::create(mediaElement, controls.get());
 166 RefPtr<MediaControlPanelMuteButtonElement> panelMuteButton = MediaControlPanelMuteButtonElement::create(document, controls.get());
167167 controls->m_panelMuteButton = panelMuteButton.get();
168168 panel->appendChild(panelMuteButton.release(), ec, true);
169169 if (ec)
170170 return 0;
171171
172  if (mediaElement->document()->page()->theme()->usesMediaControlVolumeSlider()) {
173  RefPtr<MediaControlVolumeSliderContainerElement> volumeSliderContainer = MediaControlVolumeSliderContainerElement::create(mediaElement);
 172 if (document->page()->theme()->usesMediaControlVolumeSlider()) {
 173 RefPtr<MediaControlVolumeSliderContainerElement> volumeSliderContainer = MediaControlVolumeSliderContainerElement::create(document);
174174
175  RefPtr<MediaControlVolumeSliderElement> slider = MediaControlVolumeSliderElement::create(mediaElement);
 175 RefPtr<MediaControlVolumeSliderElement> slider = MediaControlVolumeSliderElement::create(document, mediaElement->volume());
176176 controls->m_volumeSlider = slider.get();
177177 volumeSliderContainer->appendChild(slider.release(), ec, true);
178178 if (ec)
179179 return 0;
180180
181  RefPtr<MediaControlVolumeSliderMuteButtonElement> volumeSliderMuteButton = MediaControlVolumeSliderMuteButtonElement::create(mediaElement);
 181 RefPtr<MediaControlVolumeSliderMuteButtonElement> volumeSliderMuteButton = MediaControlVolumeSliderMuteButtonElement::create(document);
182182 controls->m_volumeSliderMuteButton = volumeSliderMuteButton.get();
183183 volumeSliderContainer->appendChild(volumeSliderMuteButton.release(), ec, true);
184184 if (ec)

@@PassRefPtr<MediaControlRootElement> MediaControlRootElement::create(HTMLMediaEle
191191 }
192192
193193 // FIXME: Only create when needed <http://webkit.org/b/57163>
194  RefPtr<MediaControlFullscreenVolumeMinButtonElement> fullScreenMinVolumeButton = MediaControlFullscreenVolumeMinButtonElement::create(mediaElement);
 194 RefPtr<MediaControlFullscreenVolumeMinButtonElement> fullScreenMinVolumeButton = MediaControlFullscreenVolumeMinButtonElement::create(document);
195195 controls->m_fullScreenMinVolumeButton = fullScreenMinVolumeButton.get();
196196 panel->appendChild(fullScreenMinVolumeButton.release(), ec, true);
197197 if (ec)
198198 return 0;
199199
200  RefPtr<MediaControlFullscreenVolumeSliderElement> fullScreenVolumeSlider = MediaControlFullscreenVolumeSliderElement::create(mediaElement);
 200 RefPtr<MediaControlFullscreenVolumeSliderElement> fullScreenVolumeSlider = MediaControlFullscreenVolumeSliderElement::create(document, mediaElement->volume());
201201 controls->m_fullScreenVolumeSlider = fullScreenVolumeSlider.get();
202202 panel->appendChild(fullScreenVolumeSlider.release(), ec, true);
203203 if (ec)
204204 return 0;
205205
206  RefPtr<MediaControlFullscreenVolumeMaxButtonElement> fullScreenMaxVolumeButton = MediaControlFullscreenVolumeMaxButtonElement::create(mediaElement);
 206 RefPtr<MediaControlFullscreenVolumeMaxButtonElement> fullScreenMaxVolumeButton = MediaControlFullscreenVolumeMaxButtonElement::create(document);
207207 controls->m_fullScreenMaxVolumeButton = fullScreenMaxVolumeButton.get();
208208 panel->appendChild(fullScreenMaxVolumeButton.release(), ec, true);
209209 if (ec)

@@void MediaControlRootElement::reset()
244244 return;
245245
246246 updateStatusDisplay();
 247 HTMLMediaElement* host = mediaElement();
247248
248  if (m_mediaElement->supportsFullscreen())
 249 if (host->supportsFullscreen())
249250 m_fullScreenButton->show();
250251 else
251252 m_fullScreenButton->hide();
252253
253  float duration = m_mediaElement->duration();
 254 float duration = host->duration();
254255 if (isfinite(duration) || page->theme()->hasOwnDisabledStateHandlingFor(MediaSliderPart)) {
255256 m_timeline->setDuration(duration);
256257 m_timelineContainer->show();
257  m_timeline->setPosition(m_mediaElement->currentTime());
 258 m_timeline->setPosition(host->currentTime());
258259 updateTimeDisplay();
259260 } else
260261 m_timelineContainer->hide();
261262
262  if (m_mediaElement->hasAudio() || page->theme()->hasOwnDisabledStateHandlingFor(MediaMuteButtonPart))
 263 if (host->hasAudio() || page->theme()->hasOwnDisabledStateHandlingFor(MediaMuteButtonPart))
263264 m_panelMuteButton->show();
264265 else
265266 m_panelMuteButton->hide();
266267
267268 if (m_volumeSlider)
268  m_volumeSlider->setVolume(m_mediaElement->volume());
 269 m_volumeSlider->setVolume(host->volume());
269270
270271 if (m_toggleClosedCaptionsButton) {
271  if (m_mediaElement->hasClosedCaptions())
 272 if (host->hasClosedCaptions())
272273 m_toggleClosedCaptionsButton->show();
273274 else
274275 m_toggleClosedCaptionsButton->hide();

@@void MediaControlRootElement::reset()
277278 m_playButton->updateDisplayType();
278279
279280#if ENABLE(FULLSCREEN_API)
280  if (document()->webkitIsFullScreen() && document()->webkitCurrentFullScreenElement() == m_mediaElement) {
281  if (m_mediaElement->movieLoadType() == MediaPlayer::LiveStream) {
 281 if (document()->webkitIsFullScreen() && document()->webkitCurrentFullScreenElement() == host) {
 282 if (host->movieLoadType() == MediaPlayer::LiveStream) {
282283 m_seekBackButton->hide();
283284 m_seekForwardButton->hide();
284285 m_rewindButton->show();

@@void MediaControlRootElement::reset()
291292 }
292293 } else
293294#endif
294  if (m_mediaElement->movieLoadType() != MediaPlayer::LiveStream) {
 295 if (host->movieLoadType() != MediaPlayer::LiveStream) {
295296 m_returnToRealTimeButton->hide();
296297 m_rewindButton->show();
297298 } else {

@@void MediaControlRootElement::reset()
305306void MediaControlRootElement::playbackStarted()
306307{
307308 m_playButton->updateDisplayType();
308  m_timeline->setPosition(m_mediaElement->currentTime());
 309 m_timeline->setPosition(mediaElement()->currentTime());
309310 updateTimeDisplay();
310311
311  if (m_mediaElement->isFullscreen())
 312 if (mediaElement()->isFullscreen())
312313 startHideFullscreenControlsTimer();
313314}
314315
315316void MediaControlRootElement::playbackProgressed()
316317{
317  m_timeline->setPosition(m_mediaElement->currentTime());
 318 m_timeline->setPosition(mediaElement()->currentTime());
318319 updateTimeDisplay();
319320
320  if (!m_isMouseOverControls && m_mediaElement->hasVideo())
 321 if (!m_isMouseOverControls && mediaElement()->hasVideo())
321322 makeTransparent();
322323}
323324
324325void MediaControlRootElement::playbackStopped()
325326{
326327 m_playButton->updateDisplayType();
327  m_timeline->setPosition(m_mediaElement->currentTime());
 328 m_timeline->setPosition(mediaElement()->currentTime());
328329 updateTimeDisplay();
329330 makeOpaque();
330331

@@void MediaControlRootElement::playbackStopped()
333334
334335void MediaControlRootElement::updateTimeDisplay()
335336{
336  float now = m_mediaElement->currentTime();
337  float duration = m_mediaElement->duration();
 337 float now = mediaElement()->currentTime();
 338 float duration = mediaElement()->duration();
338339
339340 Page* page = document()->page();
340341 if (!page)

@@void MediaControlRootElement::updateStatusDisplay()
376377
377378void MediaControlRootElement::loadedMetadata()
378379{
379  if (m_statusDisplay && m_mediaElement->movieLoadType() != MediaPlayer::LiveStream)
 380 if (m_statusDisplay && mediaElement()->movieLoadType() != MediaPlayer::LiveStream)
380381 m_statusDisplay->hide();
381382
382383 reset();

@@void MediaControlRootElement::changedMute()
398399void MediaControlRootElement::changedVolume()
399400{
400401 if (m_volumeSlider)
401  m_volumeSlider->setVolume(m_mediaElement->volume());
 402 m_volumeSlider->setVolume(mediaElement()->volume());
402403}
403404
404405void MediaControlRootElement::enteredFullscreen()
405406{
406  if (m_mediaElement->movieLoadType() == MediaPlayer::LiveStream) {
 407 if (mediaElement()->movieLoadType() == MediaPlayer::LiveStream) {
407408 m_seekBackButton->hide();
408409 m_seekForwardButton->hide();
409410 m_rewindButton->show();

@@void MediaControlRootElement::enteredFullscreen()
417418
418419 m_panel->setCanBeDragged(true);
419420
420  if (Page* page = m_mediaElement->document()->page())
 421 if (Page* page = mediaElement()->document()->page())
421422 page->chrome()->setCursorHiddenUntilMouseMoves(true);
422423
423424 startHideFullscreenControlsTimer();

@@void MediaControlRootElement::exitedFullscreen()
445446
446447void MediaControlRootElement::showVolumeSlider()
447448{
448  if (!m_mediaElement->hasAudio())
 449 if (!mediaElement()->hasAudio())
449450 return;
450451
451452 if (m_volumeSliderContainer)

@@void MediaControlRootElement::defaultEventHandler(Event* event)
474475 if (event->type() == eventNames().mouseoverEvent) {
475476 if (!containsRelatedTarget(event)) {
476477 m_isMouseOverControls = true;
477  if (!m_mediaElement->canPlay()) {
 478 if (!mediaElement()->canPlay()) {
478479 makeOpaque();
479480 if (shouldHideControls())
480481 startHideFullscreenControlsTimer();

@@void MediaControlRootElement::defaultEventHandler(Event* event)
486487 stopHideFullscreenControlsTimer();
487488 }
488489 } else if (event->type() == eventNames().mousemoveEvent) {
489  if (m_mediaElement->isFullscreen()) {
 490 if (mediaElement()->isFullscreen()) {
490491 // When we get a mouse move in fullscreen mode, show the media controls, and start a timer
491492 // that will hide the media controls after a 3 seconds without a mouse move.
492493 makeOpaque();

@@void MediaControlRootElement::defaultEventHandler(Event* event)
498499
499500void MediaControlRootElement::startHideFullscreenControlsTimer()
500501{
501  if (!m_mediaElement->isFullscreen())
 502 if (!mediaElement()->isFullscreen())
502503 return;
503504
504505 m_hideFullscreenControlsTimer.startOneShot(timeWithoutMouseMovementBeforeHidingControls);

@@void MediaControlRootElement::startHideFullscreenControlsTimer()
506507
507508void MediaControlRootElement::hideFullscreenControlsTimerFired(Timer<MediaControlRootElement>*)
508509{
509  if (!m_mediaElement->isPlaying())
 510 if (!mediaElement()->isPlaying())
510511 return;
511512
512  if (!m_mediaElement->isFullscreen())
 513 if (!mediaElement()->isFullscreen())
513514 return;
514515
515516 if (!shouldHideControls())
516517 return;
517518
518  if (Page* page = m_mediaElement->document()->page())
 519 if (Page* page = mediaElement()->document()->page())
519520 page->chrome()->setCursorHiddenUntilMouseMoves(true);
520521
521522 makeTransparent();

Source/WebCore/html/shadow/MediaControlRootElement.h

@@public:
9797 void updateStatusDisplay();
9898
9999 virtual bool shouldHideControls();
100 
101100private:
102  MediaControlRootElement(HTMLMediaElement*);
 101 MediaControlRootElement(Document*);
103102
104103 virtual void defaultEventHandler(Event*);
105104 void hideFullscreenControlsTimerFired(Timer<MediaControlRootElement>*);

@@private:
110109
111110 bool containsRelatedTarget(Event*);
112111
113  HTMLMediaElement* m_mediaElement;
114 
115112 MediaControlRewindButtonElement* m_rewindButton;
116113 MediaControlPlayButtonElement* m_playButton;
117114 MediaControlReturnToRealtimeButtonElement* m_returnToRealTimeButton;

Source/WebCore/html/shadow/MediaControlRootElementChromium.cpp

@@using namespace std;
3838
3939namespace WebCore {
4040
41 MediaControlRootElementChromium::MediaControlRootElementChromium(HTMLMediaElement* mediaElement)
42  : MediaControls(mediaElement)
43  , m_mediaElement(mediaElement)
 41MediaControlRootElementChromium::MediaControlRootElementChromium(Document* document)
 42 : MediaControls(document)
4443 , m_playButton(0)
4544 , m_currentTimeDisplay(0)
4645 , m_timeline(0)

@@PassRefPtr<MediaControls> MediaControls::create(HTMLMediaElement* mediaElement)
6160
6261PassRefPtr<MediaControlRootElementChromium> MediaControlRootElementChromium::create(HTMLMediaElement* mediaElement)
6362{
64  if (!mediaElement->document()->page())
 63 Document* document = mediaElement->document();
 64 if (!document->page())
6565 return 0;
6666
67  RefPtr<MediaControlRootElementChromium> controls = adoptRef(new MediaControlRootElementChromium(mediaElement));
 67 RefPtr<MediaControlRootElementChromium> controls = adoptRef(new MediaControlRootElementChromium(document));
6868
69  RefPtr<MediaControlPanelElement> panel = MediaControlPanelElement::create(mediaElement);
 69 RefPtr<MediaControlPanelElement> panel = MediaControlPanelElement::create(document);
7070
7171 ExceptionCode ec;
7272
73  RefPtr<MediaControlPlayButtonElement> playButton = MediaControlPlayButtonElement::create(mediaElement);
 73 RefPtr<MediaControlPlayButtonElement> playButton = MediaControlPlayButtonElement::create(document);
7474 controls->m_playButton = playButton.get();
7575 panel->appendChild(playButton.release(), ec, true);
7676 if (ec)
7777 return 0;
7878
79  RefPtr<MediaControlTimelineContainerElement> timelineContainer = MediaControlTimelineContainerElement::create(mediaElement);
 79 RefPtr<MediaControlTimelineContainerElement> timelineContainer = MediaControlTimelineContainerElement::create(document);
8080
81  RefPtr<MediaControlTimelineElement> timeline = MediaControlTimelineElement::create(mediaElement, controls.get());
 81 RefPtr<MediaControlTimelineElement> timeline = MediaControlTimelineElement::create(document, controls.get());
8282 controls->m_timeline = timeline.get();
8383 timelineContainer->appendChild(timeline.release(), ec, true);
8484 if (ec)
8585 return 0;
8686
87  RefPtr<MediaControlCurrentTimeDisplayElement> currentTimeDisplay = MediaControlCurrentTimeDisplayElement::create(mediaElement);
 87 RefPtr<MediaControlCurrentTimeDisplayElement> currentTimeDisplay = MediaControlCurrentTimeDisplayElement::create(document);
8888 controls->m_currentTimeDisplay = currentTimeDisplay.get();
8989 timelineContainer->appendChild(currentTimeDisplay.release(), ec, true);
9090 if (ec)

@@PassRefPtr<MediaControlRootElementChromium> MediaControlRootElementChromium::cre
9595 if (ec)
9696 return 0;
9797
98  RefPtr<MediaControlPanelMuteButtonElement> panelMuteButton = MediaControlPanelMuteButtonElement::create(mediaElement, controls.get());
 98 RefPtr<MediaControlPanelMuteButtonElement> panelMuteButton = MediaControlPanelMuteButtonElement::create(document, controls.get());
9999 controls->m_panelMuteButton = panelMuteButton.get();
100100 panel->appendChild(panelMuteButton.release(), ec, true);
101101 if (ec)
102102 return 0;
103103
104  RefPtr<MediaControlVolumeSliderContainerElement> volumeSliderContainer = MediaControlVolumeSliderContainerElement::create(mediaElement);
 104 RefPtr<MediaControlVolumeSliderContainerElement> volumeSliderContainer = MediaControlVolumeSliderContainerElement::create(document);
105105
106  RefPtr<MediaControlVolumeSliderElement> slider = MediaControlVolumeSliderElement::create(mediaElement);
 106 RefPtr<MediaControlVolumeSliderElement> slider = MediaControlVolumeSliderElement::create(document, mediaElement->volume());
107107 controls->m_volumeSlider = slider.get();
108108 volumeSliderContainer->appendChild(slider.release(), ec, true);
109109 if (ec)

@@void MediaControlRootElementChromium::reset()
150150
151151 updateStatusDisplay();
152152
153  float duration = m_mediaElement->duration();
 153 float duration = mediaElement()->duration();
154154 m_timeline->setDuration(duration);
155155 m_timelineContainer->show();
156  m_timeline->setPosition(m_mediaElement->currentTime());
 156 m_timeline->setPosition(mediaElement()->currentTime());
157157 updateTimeDisplay();
158158
159159 m_panelMuteButton->show();
160160
161161 if (m_volumeSlider)
162  m_volumeSlider->setVolume(m_mediaElement->volume());
 162 m_volumeSlider->setVolume(mediaElement()->volume());
163163
164164 makeOpaque();
165165}

@@void MediaControlRootElementChromium::reset()
167167void MediaControlRootElementChromium::playbackStarted()
168168{
169169 m_playButton->updateDisplayType();
170  m_timeline->setPosition(m_mediaElement->currentTime());
 170 m_timeline->setPosition(mediaElement()->currentTime());
171171 updateTimeDisplay();
172172}
173173
174174void MediaControlRootElementChromium::playbackProgressed()
175175{
176  m_timeline->setPosition(m_mediaElement->currentTime());
 176 m_timeline->setPosition(mediaElement()->currentTime());
177177 updateTimeDisplay();
178178
179  if (!m_isMouseOverControls && m_mediaElement->hasVideo())
 179 if (!m_isMouseOverControls && mediaElement()->hasVideo())
180180 makeTransparent();
181181}
182182
183183void MediaControlRootElementChromium::playbackStopped()
184184{
185185 m_playButton->updateDisplayType();
186  m_timeline->setPosition(m_mediaElement->currentTime());
 186 m_timeline->setPosition(mediaElement()->currentTime());
187187 updateTimeDisplay();
188188 makeOpaque();
189189}
190190
191191void MediaControlRootElementChromium::updateTimeDisplay()
192192{
193  float now = m_mediaElement->currentTime();
194  float duration = m_mediaElement->duration();
 193 float now = mediaElement()->currentTime();
 194 float duration = mediaElement()->duration();
195195
196196 Page* page = document()->page();
197197 if (!page)

@@void MediaControlRootElementChromium::defaultEventHandler(Event* event)
245245 if (event->type() == eventNames().mouseoverEvent) {
246246 if (!containsRelatedTarget(event)) {
247247 m_isMouseOverControls = true;
248  if (!m_mediaElement->canPlay())
 248 if (!mediaElement()->canPlay())
249249 makeOpaque();
250250 }
251251 } else if (event->type() == eventNames().mouseoutEvent) {

@@void MediaControlRootElementChromium::changedMute()
265265
266266void MediaControlRootElementChromium::changedVolume()
267267{
268  m_volumeSlider->setVolume(m_mediaElement->volume());
 268 m_volumeSlider->setVolume(mediaElement()->volume());
269269}
270270
271271void MediaControlRootElementChromium::enteredFullscreen()

@@void MediaControlRootElementChromium::exitedFullscreen()
278278
279279void MediaControlRootElementChromium::showVolumeSlider()
280280{
281  if (!m_mediaElement->hasAudio())
 281 if (!mediaElement()->hasAudio())
282282 return;
283283
284284 m_volumeSliderContainer->show();

Source/WebCore/html/shadow/MediaControlRootElementChromium.h

@@public:
8787 virtual bool shouldHideControls();
8888
8989private:
90  MediaControlRootElementChromium(HTMLMediaElement*);
 90 MediaControlRootElementChromium(Document*);
9191
9292 virtual void defaultEventHandler(Event*);
9393

Source/WebCore/html/shadow/MediaControls.cpp

3333#include "HTMLDivElement.h"
3434#include "HTMLMediaElement.h"
3535#include "HTMLNames.h"
 36#include "ShadowRoot.h"
3637
3738namespace WebCore {
3839
39 MediaControls::MediaControls(HTMLMediaElement* mediaElement)
40  : HTMLDivElement(HTMLNames::divTag, mediaElement->document())
 40HTMLMediaElement* hostMediaElementFor(const Element* shadowNode)
4141{
 42 Element* host = toShadowRoot(shadowNode->shadowTreeRootNode())->shadowHost();
 43 ASSERT(host->isMediaElement());
 44 return static_cast<HTMLMediaElement*>(host);
 45}
 46
 47MediaControls::MediaControls(Document* document)
 48 : HTMLDivElement(HTMLNames::divTag, document)
 49{
 50}
 51
 52HTMLMediaElement* MediaControls::mediaElement() const
 53{
 54 return hostMediaElementFor(this);
4255}
4356
4457}

Source/WebCore/html/shadow/MediaControls.h

@@namespace WebCore {
3535
3636class HTMLMediaElement;
3737
 38HTMLMediaElement* hostMediaElementFor(const Element*);
 39
3840class MediaControls : public HTMLDivElement {
3941 public:
4042 virtual ~MediaControls() {}

@@class MediaControls : public HTMLDivElement {
7173 virtual bool shouldHideControls() = 0;
7274
7375protected:
74  MediaControls(HTMLMediaElement*);
 76 MediaControls(Document*);
 77 HTMLMediaElement* mediaElement() const;
7578
7679private:
7780 MediaControls();