12daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch/* 22daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch * Copyright (C) 2007, 2008, 2009, 2010 Apple Inc. All rights reserved. 32daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch * Copyright (C) 2011 Google Inc. All rights reserved. 42daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch * 52daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch * Redistribution and use in source and binary forms, with or without 62daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch * modification, are permitted provided that the following conditions 72daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch * are met: 82daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch * 1. Redistributions of source code must retain the above copyright 92daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch * notice, this list of conditions and the following disclaimer. 102daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch * 2. Redistributions in binary form must reproduce the above copyright 112daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch * notice, this list of conditions and the following disclaimer in the 122daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch * documentation and/or other materials provided with the distribution. 132daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch * 142daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY 152daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 162daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 172daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 182daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 192daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 202daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 212daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 222daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 232daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 242daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 252daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch */ 262daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 272daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#ifndef MediaControlRootElement_h 282daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#define MediaControlRootElement_h 292daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 302daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#if ENABLE(VIDEO) 312daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 322daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#include "MediaControls.h" 332daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#include <wtf/RefPtr.h> 342daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 352daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochnamespace WebCore { 362daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 372daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochclass HTMLInputElement; 382daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochclass HTMLMediaElement; 392daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochclass Event; 402daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochclass MediaControlPanelMuteButtonElement; 412daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochclass MediaControlPlayButtonElement; 422daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochclass MediaControlSeekButtonElement; 432daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochclass MediaControlRewindButtonElement; 442daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochclass MediaControlReturnToRealtimeButtonElement; 452daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochclass MediaControlToggleClosedCaptionsButtonElement; 462daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochclass MediaControlCurrentTimeDisplayElement; 472daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochclass MediaControlTimelineElement; 482daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochclass MediaControlTimeRemainingDisplayElement; 492daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochclass MediaControlVolumeSliderElement; 502daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochclass MediaControlFullscreenButtonElement; 512daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochclass MediaControlTimeDisplayElement; 522daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochclass MediaControlStatusDisplayElement; 532daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochclass MediaControlTimelineContainerElement; 542daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochclass MediaControlSeekBackButtonElement; 552daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochclass MediaControlSeekForwardButtonElement; 562daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochclass MediaControlMuteButtonElement; 572daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochclass MediaControlVolumeSliderElement; 582daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochclass MediaControlVolumeSliderMuteButtonElement; 592daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochclass MediaControlVolumeSliderContainerElement; 602daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochclass MediaControlFullscreenVolumeMinButtonElement; 612daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochclass MediaControlFullscreenVolumeSliderElement; 622daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochclass MediaControlFullscreenVolumeMaxButtonElement; 632daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochclass MediaControlPanelElement; 642daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochclass MediaPlayer; 652daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 662daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochclass RenderBox; 672daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochclass RenderMedia; 682daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 692daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochclass MediaControlRootElement : public MediaControls { 702daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochpublic: 712daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch static PassRefPtr<MediaControlRootElement> create(HTMLMediaElement*); 722daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 732daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch // MediaControls implementation. 742daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch void show(); 752daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch void hide(); 762daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch void makeOpaque(); 772daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch void makeTransparent(); 782daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 792daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch void reset(); 802daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 812daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch void playbackProgressed(); 822daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch void playbackStarted(); 832daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch void playbackStopped(); 842daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 852daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch void changedMute(); 862daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch void changedVolume(); 872daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 882daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch void enteredFullscreen(); 892daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch void exitedFullscreen(); 902daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 912daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch void reportedError(); 922daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch void changedNetworkState(); 932daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch void loadedMetadata(); 942daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch void changedClosedCaptionsVisibility(); 952daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 962daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch void showVolumeSlider(); 972daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch void updateTimeDisplay(); 982daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 992daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochprivate: 1002daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch MediaControlRootElement(HTMLMediaElement*); 1012daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 1022daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch virtual const AtomicString& shadowPseudoId() const; 1032daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 1042daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch HTMLMediaElement* m_mediaElement; 1052daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 1062daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch MediaControlRewindButtonElement* m_rewindButton; 1072daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch MediaControlPlayButtonElement* m_playButton; 1082daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch MediaControlReturnToRealtimeButtonElement* m_returnToRealTimeButton; 1092daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch MediaControlStatusDisplayElement* m_statusDisplay; 1102daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch MediaControlCurrentTimeDisplayElement* m_currentTimeDisplay; 1112daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch MediaControlTimelineElement* m_timeline; 1122daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch MediaControlTimeRemainingDisplayElement* m_timeRemainingDisplay; 1132daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch MediaControlTimelineContainerElement* m_timelineContainer; 1142daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch MediaControlSeekBackButtonElement* m_seekBackButton; 1152daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch MediaControlSeekForwardButtonElement* m_seekForwardButton; 1162daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch MediaControlToggleClosedCaptionsButtonElement* m_toggleClosedCaptionsButton; 1172daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch MediaControlPanelMuteButtonElement* m_panelMuteButton; 1182daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch MediaControlVolumeSliderElement* m_volumeSlider; 1192daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch MediaControlVolumeSliderMuteButtonElement* m_volumeSliderMuteButton; 1202daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch MediaControlVolumeSliderContainerElement* m_volumeSliderContainer; 1212daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch MediaControlFullscreenButtonElement* m_fullScreenButton; 1222daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch MediaControlFullscreenVolumeMinButtonElement* m_fullScreenMinVolumeButton; 1232daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch MediaControlFullscreenVolumeSliderElement* m_fullScreenVolumeSlider; 1242daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch MediaControlFullscreenVolumeMaxButtonElement* m_fullScreenMaxVolumeButton; 1252daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch MediaControlPanelElement* m_panel; 1262daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 1272daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch bool m_opaque; 1282daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch}; 1292daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 1302daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch} 1312daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 1322daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#endif 1332daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#endif 134