2 * Copyright (C) 2008, 2009, 2010, 2011 Apple Inc. All rights reserved.
3 * Copyright (C) 2012 Google Inc. All rights reserved.
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
15 * its contributors may be used to endorse or promote products derived
16 * from this software without specific prior written permission.
18 * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
19 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
20 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21 * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
22 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
24 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
25 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 #ifndef MediaControlElements_h
31 #define MediaControlElements_h
33 #include "core/html/shadow/MediaControlElementTypes.h"
37 // ----------------------------
39 class MediaControlPanelElement final : public MediaControlDivElement {
41 static PassRefPtrWillBeRawPtr<MediaControlPanelElement> create(MediaControls&);
43 void setIsDisplayed(bool);
46 void makeTransparent();
49 explicit MediaControlPanelElement(MediaControls&);
51 virtual const AtomicString& shadowPseudoId() const override;
52 virtual void defaultEventHandler(Event*) override;
56 void transitionTimerFired(Timer<MediaControlPanelElement>*);
57 virtual bool keepEventInNode(Event*) override;
62 Timer<MediaControlPanelElement> m_transitionTimer;
65 // ----------------------------
67 class MediaControlPanelEnclosureElement final : public MediaControlDivElement {
69 static PassRefPtrWillBeRawPtr<MediaControlPanelEnclosureElement> create(MediaControls&);
72 explicit MediaControlPanelEnclosureElement(MediaControls&);
73 virtual const AtomicString& shadowPseudoId() const override;
76 // ----------------------------
78 class MediaControlOverlayEnclosureElement final : public MediaControlDivElement {
80 static PassRefPtrWillBeRawPtr<MediaControlOverlayEnclosureElement> create(MediaControls&);
83 explicit MediaControlOverlayEnclosureElement(MediaControls&);
84 virtual const AtomicString& shadowPseudoId() const override;
85 virtual void* preDispatchEventHandler(Event*) override;
88 // ----------------------------
90 class MediaControlMuteButtonElement final : public MediaControlInputElement {
92 static PassRefPtrWillBeRawPtr<MediaControlMuteButtonElement> create(MediaControls&);
94 virtual bool willRespondToMouseClickEvents() override { return true; }
95 virtual void updateDisplayType() override;
98 explicit MediaControlMuteButtonElement(MediaControls&);
100 virtual const AtomicString& shadowPseudoId() const override;
101 virtual void defaultEventHandler(Event*) override;
104 // ----------------------------
106 class MediaControlPlayButtonElement final : public MediaControlInputElement {
108 static PassRefPtrWillBeRawPtr<MediaControlPlayButtonElement> create(MediaControls&);
110 virtual bool willRespondToMouseClickEvents() override { return true; }
111 virtual void updateDisplayType() override;
114 explicit MediaControlPlayButtonElement(MediaControls&);
116 virtual const AtomicString& shadowPseudoId() const override;
117 virtual void defaultEventHandler(Event*) override;
120 // ----------------------------
122 class MediaControlOverlayPlayButtonElement final : public MediaControlInputElement {
124 static PassRefPtrWillBeRawPtr<MediaControlOverlayPlayButtonElement> create(MediaControls&);
126 virtual void updateDisplayType() override;
129 explicit MediaControlOverlayPlayButtonElement(MediaControls&);
131 virtual const AtomicString& shadowPseudoId() const override;
132 virtual void defaultEventHandler(Event*) override;
133 virtual bool keepEventInNode(Event*) override;
136 // ----------------------------
138 class MediaControlToggleClosedCaptionsButtonElement final : public MediaControlInputElement {
140 static PassRefPtrWillBeRawPtr<MediaControlToggleClosedCaptionsButtonElement> create(MediaControls&);
142 virtual bool willRespondToMouseClickEvents() override { return true; }
144 virtual void updateDisplayType() override;
147 explicit MediaControlToggleClosedCaptionsButtonElement(MediaControls&);
149 virtual const AtomicString& shadowPseudoId() const override;
150 virtual void defaultEventHandler(Event*) override;
153 // ----------------------------
155 class MediaControlTimelineElement final : public MediaControlInputElement {
157 static PassRefPtrWillBeRawPtr<MediaControlTimelineElement> create(MediaControls&);
159 virtual bool willRespondToMouseClickEvents() override;
161 // FIXME: An "earliest possible position" will be needed once that concept
162 // is supported by HTMLMediaElement, see https://crbug.com/137275
163 void setPosition(double);
164 void setDuration(double);
167 explicit MediaControlTimelineElement(MediaControls&);
169 virtual const AtomicString& shadowPseudoId() const override;
170 virtual void defaultEventHandler(Event*) override;
171 virtual bool keepEventInNode(Event*) override;
174 // ----------------------------
176 class MediaControlFullscreenButtonElement final : public MediaControlInputElement {
178 static PassRefPtrWillBeRawPtr<MediaControlFullscreenButtonElement> create(MediaControls&);
180 virtual bool willRespondToMouseClickEvents() override { return true; }
182 void setIsFullscreen(bool);
185 explicit MediaControlFullscreenButtonElement(MediaControls&);
187 virtual const AtomicString& shadowPseudoId() const override;
188 virtual void defaultEventHandler(Event*) override;
191 // ----------------------------
193 class MediaControlCastButtonElement final : public MediaControlInputElement {
195 static PassRefPtrWillBeRawPtr<MediaControlCastButtonElement> create(MediaControls&, bool isOverlayButton);
197 virtual bool willRespondToMouseClickEvents() override { return true; }
199 void setIsPlayingRemotely(bool);
202 explicit MediaControlCastButtonElement(MediaControls&, bool isOverlayButton);
204 virtual const AtomicString& shadowPseudoId() const override;
205 virtual void defaultEventHandler(Event*) override;
206 virtual bool keepEventInNode(Event*) override;
208 bool m_isOverlayButton;
211 // ----------------------------
213 class MediaControlVolumeSliderElement final : public MediaControlInputElement {
215 static PassRefPtrWillBeRawPtr<MediaControlVolumeSliderElement> create(MediaControls&);
217 virtual bool willRespondToMouseMoveEvents() override;
218 virtual bool willRespondToMouseClickEvents() override;
219 void setVolume(double);
222 explicit MediaControlVolumeSliderElement(MediaControls&);
224 virtual const AtomicString& shadowPseudoId() const override;
225 virtual void defaultEventHandler(Event*) override;
226 virtual bool keepEventInNode(Event*) override;
229 // ----------------------------
231 class MediaControlTimeRemainingDisplayElement final : public MediaControlTimeDisplayElement {
233 static PassRefPtrWillBeRawPtr<MediaControlTimeRemainingDisplayElement> create(MediaControls&);
236 explicit MediaControlTimeRemainingDisplayElement(MediaControls&);
237 virtual const AtomicString& shadowPseudoId() const override;
240 // ----------------------------
242 class MediaControlCurrentTimeDisplayElement final : public MediaControlTimeDisplayElement {
244 static PassRefPtrWillBeRawPtr<MediaControlCurrentTimeDisplayElement> create(MediaControls&);
247 explicit MediaControlCurrentTimeDisplayElement(MediaControls&);
248 virtual const AtomicString& shadowPseudoId() const override;
251 // ----------------------------
253 class MediaControlTextTrackContainerElement final : public MediaControlDivElement {
255 static PassRefPtrWillBeRawPtr<MediaControlTextTrackContainerElement> create(MediaControls&);
257 void updateDisplay();
259 static const AtomicString& textTrackContainerElementShadowPseudoId();
262 explicit MediaControlTextTrackContainerElement(MediaControls&);
263 virtual const AtomicString& shadowPseudoId() const override;
265 virtual RenderObject* createRenderer(RenderStyle*) override;
267 IntRect m_videoDisplaySize;
274 #endif // MediaControlElements_h