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

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

Issue 949203002: Separate the text track container from the media controls (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: same size as media controls Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2011, 2012 Apple Inc. All rights reserved. 2 * Copyright (C) 2011, 2012 Apple Inc. All rights reserved.
3 * Copyright (C) 2011, 2012 Google Inc. All rights reserved. 3 * Copyright (C) 2011, 2012 Google Inc. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698