12fc2651226baac27029e38c9d6ef883fa32084dbSteve Block/* 22daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch * Copyright (C) 2011 Apple Inc. All rights reserved. 32fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * Copyright (C) 2011 Google Inc. All rights reserved. 42fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * 52fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * Redistribution and use in source and binary forms, with or without 62fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * modification, are permitted provided that the following conditions 72fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * are met: 82fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * 1. Redistributions of source code must retain the above copyright 92fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * notice, this list of conditions and the following disclaimer. 102fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * 2. Redistributions in binary form must reproduce the above copyright 112fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * notice, this list of conditions and the following disclaimer in the 122fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * documentation and/or other materials provided with the distribution. 132fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * 142fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY 152fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 162fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 172fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 182fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 192fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 202fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 212fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 222fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 232fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 242fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 252fc2651226baac27029e38c9d6ef883fa32084dbSteve Block */ 262fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 272fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#ifndef MediaControls_h 282fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#define MediaControls_h 292fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 302fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#if ENABLE(VIDEO) 312fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 322daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#include "HTMLDivElement.h" 332fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 342fc2651226baac27029e38c9d6ef883fa32084dbSteve Blocknamespace WebCore { 352fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 362fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockclass HTMLMediaElement; 372fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 382daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochclass MediaControls : public HTMLDivElement { 392daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch public: 402daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch virtual ~MediaControls() {} 412bde8e466a4451c7319e3a072d118917957d6554Steve Block 422daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch // This function is to be implemented in your port-specific media 432daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch // controls implementation. 442daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch static PassRefPtr<MediaControls> create(HTMLMediaElement*); 452bde8e466a4451c7319e3a072d118917957d6554Steve Block 462daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch virtual void show() = 0; 472daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch virtual void hide() = 0; 482daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch virtual void makeOpaque() = 0; 492daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch virtual void makeTransparent() = 0; 502bde8e466a4451c7319e3a072d118917957d6554Steve Block 512daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch virtual void reset() = 0; 522fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 532daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch virtual void playbackProgressed() = 0; 542daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch virtual void playbackStarted() = 0; 552daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch virtual void playbackStopped() = 0; 562fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 572daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch virtual void changedMute() = 0; 582daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch virtual void changedVolume() = 0; 592daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 602daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch virtual void enteredFullscreen() = 0; 612daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch virtual void exitedFullscreen() = 0; 622daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 632daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch virtual void reportedError() = 0; 642daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch virtual void changedNetworkState() = 0; 652daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch virtual void loadedMetadata() = 0; 662daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch virtual void changedClosedCaptionsVisibility() = 0; 672fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 682daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch virtual void showVolumeSlider() = 0; 692daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch virtual void updateTimeDisplay() = 0; 702fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 712daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochprotected: 722daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch MediaControls(HTMLMediaElement*); 732fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 742fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockprivate: 752daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch MediaControls(); 7654cdeeebc7adcbcd900e8b6a141a8cae27d9a631Steve Block 7754cdeeebc7adcbcd900e8b6a141a8cae27d9a631Steve Block virtual bool isMediaControls() const { return true; } 782fc2651226baac27029e38c9d6ef883fa32084dbSteve Block}; 792fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 8054cdeeebc7adcbcd900e8b6a141a8cae27d9a631Steve Blockinline MediaControls* toMediaControls(Node* node) 8154cdeeebc7adcbcd900e8b6a141a8cae27d9a631Steve Block{ 8254cdeeebc7adcbcd900e8b6a141a8cae27d9a631Steve Block ASSERT(!node || node->isMediaControls()); 8354cdeeebc7adcbcd900e8b6a141a8cae27d9a631Steve Block return static_cast<MediaControls*>(node); 8454cdeeebc7adcbcd900e8b6a141a8cae27d9a631Steve Block} 8554cdeeebc7adcbcd900e8b6a141a8cae27d9a631Steve Block 8654cdeeebc7adcbcd900e8b6a141a8cae27d9a631Steve Block// This will catch anyone doing an unneccessary cast. 8754cdeeebc7adcbcd900e8b6a141a8cae27d9a631Steve Blockvoid toMediaControls(const Node*); 8854cdeeebc7adcbcd900e8b6a141a8cae27d9a631Steve Block 892fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 902fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 912fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#endif 922daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 932fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#endif 94