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 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
43 | 43 |
44 static bool fullscreenIsSupported(const Document& document) | 44 static bool fullscreenIsSupported(const Document& document) |
45 { | 45 { |
46 return !document.settings() || document.settings()->fullscreenSupported(); | 46 return !document.settings() || document.settings()->fullscreenSupported(); |
47 } | 47 } |
48 | 48 |
49 MediaControls::MediaControls(HTMLMediaElement& mediaElement) | 49 MediaControls::MediaControls(HTMLMediaElement& mediaElement) |
50 : HTMLDivElement(mediaElement.document()) | 50 : HTMLDivElement(mediaElement.document()) |
51 , m_mediaElement(&mediaElement) | 51 , m_mediaElement(&mediaElement) |
52 , m_panel(nullptr) | 52 , m_panel(nullptr) |
53 , m_textDisplayContainer(nullptr) | |
54 , m_overlayPlayButton(nullptr) | 53 , m_overlayPlayButton(nullptr) |
55 , m_overlayEnclosure(nullptr) | 54 , m_overlayEnclosure(nullptr) |
56 , m_playButton(nullptr) | 55 , m_playButton(nullptr) |
57 , m_currentTimeDisplay(nullptr) | 56 , m_currentTimeDisplay(nullptr) |
58 , m_timeline(nullptr) | 57 , m_timeline(nullptr) |
59 , m_muteButton(nullptr) | 58 , m_muteButton(nullptr) |
60 , m_volumeSlider(nullptr) | 59 , m_volumeSlider(nullptr) |
61 , m_toggleClosedCaptionsButton(nullptr) | 60 , m_toggleClosedCaptionsButton(nullptr) |
62 , m_fullScreenButton(nullptr) | 61 , m_fullScreenButton(nullptr) |
63 , m_castButton(nullptr) | 62 , m_castButton(nullptr) |
(...skipping 12 matching lines...) Expand all Loading... |
76 RefPtrWillBeRawPtr<MediaControls> controls = adoptRefWillBeNoop(new MediaCon
trols(mediaElement)); | 75 RefPtrWillBeRawPtr<MediaControls> controls = adoptRefWillBeNoop(new MediaCon
trols(mediaElement)); |
77 controls->setShadowPseudoId(AtomicString("-webkit-media-controls", AtomicStr
ing::ConstructFromLiteral)); | 76 controls->setShadowPseudoId(AtomicString("-webkit-media-controls", AtomicStr
ing::ConstructFromLiteral)); |
78 controls->initializeControls(); | 77 controls->initializeControls(); |
79 return controls.release(); | 78 return controls.release(); |
80 } | 79 } |
81 | 80 |
82 // The media controls DOM structure looks like: | 81 // The media controls DOM structure looks like: |
83 // | 82 // |
84 // MediaControls (-webkit-media-controls) | 83 // MediaControls (-webkit-media-controls) |
85 // +-MediaControlOverlayEnclosureElement (-webkit-media-controls-o
verlay-enclosure) | 84 // +-MediaControlOverlayEnclosureElement (-webkit-media-controls-o
verlay-enclosure) |
86 // | +-MediaControlTextTrackContainerElement (-webkit-media-text-track
-container) | |
87 // | | {when text tracks are enabled} | |
88 // | +-MediaControlOverlayPlayButtonElement (-webkit-media-controls-o
verlay-play-button) | 85 // | +-MediaControlOverlayPlayButtonElement (-webkit-media-controls-o
verlay-play-button) |
89 // | | {if mediaControlsOverlayPlayButtonEnabled} | 86 // | | {if mediaControlsOverlayPlayButtonEnabled} |
90 // | \-MediaControlCastButtonElement (-internal-media-controls
-overlay-cast-button) | 87 // | \-MediaControlCastButtonElement (-internal-media-controls
-overlay-cast-button) |
91 // \-MediaControlPanelEnclosureElement (-webkit-media-controls-e
nclosure) | 88 // \-MediaControlPanelEnclosureElement (-webkit-media-controls-e
nclosure) |
92 // \-MediaControlPanelElement (-webkit-media-controls-p
anel) | 89 // \-MediaControlPanelElement (-webkit-media-controls-p
anel) |
93 // +-MediaControlPlayButtonElement (-webkit-media-controls-p
lay-button) | 90 // +-MediaControlPlayButtonElement (-webkit-media-controls-p
lay-button) |
94 // +-MediaControlTimelineElement (-webkit-media-controls-t
imeline) | 91 // +-MediaControlTimelineElement (-webkit-media-controls-t
imeline) |
95 // +-MediaControlCurrentTimeDisplayElement (-webkit-media-controls-c
urrent-time-display) | 92 // +-MediaControlCurrentTimeDisplayElement (-webkit-media-controls-c
urrent-time-display) |
96 // +-MediaControlTimeRemainingDisplayElement (-webkit-media-controls-t
ime-remaining-display) | 93 // +-MediaControlTimeRemainingDisplayElement (-webkit-media-controls-t
ime-remaining-display) |
97 // +-MediaControlMuteButtonElement (-webkit-media-controls-m
ute-button) | 94 // +-MediaControlMuteButtonElement (-webkit-media-controls-m
ute-button) |
98 // +-MediaControlVolumeSliderElement (-webkit-media-controls-v
olume-slider) | 95 // +-MediaControlVolumeSliderElement (-webkit-media-controls-v
olume-slider) |
99 // +-MediaControlToggleClosedCaptionsButtonElement (-webkit-media-controls-t
oggle-closed-captions-button) | 96 // +-MediaControlToggleClosedCaptionsButtonElement (-webkit-media-controls-t
oggle-closed-captions-button) |
100 // +-MediaControlCastButtonElement (-internal-media-controls
-cast-button) | 97 // +-MediaControlCastButtonElement (-internal-media-controls
-cast-button) |
101 // \-MediaControlFullscreenButtonElement (-webkit-media-controls-f
ullscreen-button) | 98 // \-MediaControlFullscreenButtonElement (-webkit-media-controls-f
ullscreen-button) |
102 // | 99 |
103 // Most of the structure is built by MediaControls::initializeControls() - the | |
104 // exception being MediaControlTextTrackContainerElement which is added | |
105 // on-demand by MediaControls::createTextTrackDisplay(). | |
106 void MediaControls::initializeControls() | 100 void MediaControls::initializeControls() |
107 { | 101 { |
108 RefPtrWillBeRawPtr<MediaControlOverlayEnclosureElement> overlayEnclosure = M
ediaControlOverlayEnclosureElement::create(*this); | 102 RefPtrWillBeRawPtr<MediaControlOverlayEnclosureElement> overlayEnclosure = M
ediaControlOverlayEnclosureElement::create(*this); |
109 | 103 |
110 if (document().settings() && document().settings()->mediaControlsOverlayPlay
ButtonEnabled()) { | 104 if (document().settings() && document().settings()->mediaControlsOverlayPlay
ButtonEnabled()) { |
111 RefPtrWillBeRawPtr<MediaControlOverlayPlayButtonElement> overlayPlayButt
on = MediaControlOverlayPlayButtonElement::create(*this); | 105 RefPtrWillBeRawPtr<MediaControlOverlayPlayButtonElement> overlayPlayButt
on = MediaControlOverlayPlayButtonElement::create(*this); |
112 m_overlayPlayButton = overlayPlayButton.get(); | 106 m_overlayPlayButton = overlayPlayButton.get(); |
113 overlayEnclosure->appendChild(overlayPlayButton.release()); | 107 overlayEnclosure->appendChild(overlayPlayButton.release()); |
114 } | 108 } |
115 | 109 |
(...skipping 393 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
509 bool MediaControls::containsRelatedTarget(Event* event) | 503 bool MediaControls::containsRelatedTarget(Event* event) |
510 { | 504 { |
511 if (!event->isMouseEvent()) | 505 if (!event->isMouseEvent()) |
512 return false; | 506 return false; |
513 EventTarget* relatedTarget = toMouseEvent(event)->relatedTarget(); | 507 EventTarget* relatedTarget = toMouseEvent(event)->relatedTarget(); |
514 if (!relatedTarget) | 508 if (!relatedTarget) |
515 return false; | 509 return false; |
516 return contains(relatedTarget->toNode()); | 510 return contains(relatedTarget->toNode()); |
517 } | 511 } |
518 | 512 |
519 void MediaControls::createTextTrackDisplay() | |
520 { | |
521 if (m_textDisplayContainer) | |
522 return; | |
523 | |
524 RefPtrWillBeRawPtr<MediaControlTextTrackContainerElement> textDisplayContain
er = MediaControlTextTrackContainerElement::create(*this); | |
525 m_textDisplayContainer = textDisplayContainer.get(); | |
526 | |
527 // Insert it before (behind) all other control elements. | |
528 m_overlayEnclosure->insertBefore(textDisplayContainer.release(), m_overlayEn
closure->firstChild()); | |
529 } | |
530 | |
531 void MediaControls::updateTextTrackDisplay() | |
532 { | |
533 if (!m_textDisplayContainer) | |
534 createTextTrackDisplay(); | |
535 | |
536 m_textDisplayContainer->updateDisplay(); | |
537 } | |
538 | |
539 DEFINE_TRACE(MediaControls) | 513 DEFINE_TRACE(MediaControls) |
540 { | 514 { |
541 visitor->trace(m_mediaElement); | 515 visitor->trace(m_mediaElement); |
542 visitor->trace(m_panel); | 516 visitor->trace(m_panel); |
543 visitor->trace(m_textDisplayContainer); | |
544 visitor->trace(m_overlayPlayButton); | 517 visitor->trace(m_overlayPlayButton); |
545 visitor->trace(m_overlayEnclosure); | 518 visitor->trace(m_overlayEnclosure); |
546 visitor->trace(m_playButton); | 519 visitor->trace(m_playButton); |
547 visitor->trace(m_currentTimeDisplay); | 520 visitor->trace(m_currentTimeDisplay); |
548 visitor->trace(m_timeline); | 521 visitor->trace(m_timeline); |
549 visitor->trace(m_muteButton); | 522 visitor->trace(m_muteButton); |
550 visitor->trace(m_volumeSlider); | 523 visitor->trace(m_volumeSlider); |
551 visitor->trace(m_toggleClosedCaptionsButton); | 524 visitor->trace(m_toggleClosedCaptionsButton); |
552 visitor->trace(m_fullScreenButton); | 525 visitor->trace(m_fullScreenButton); |
553 visitor->trace(m_durationDisplay); | 526 visitor->trace(m_durationDisplay); |
554 visitor->trace(m_enclosure); | 527 visitor->trace(m_enclosure); |
555 visitor->trace(m_castButton); | 528 visitor->trace(m_castButton); |
556 visitor->trace(m_overlayCastButton); | 529 visitor->trace(m_overlayCastButton); |
557 HTMLDivElement::trace(visitor); | 530 HTMLDivElement::trace(visitor); |
558 } | 531 } |
559 | 532 |
560 } | 533 } |
OLD | NEW |